我正在尝试尽可能多地使用RubyMine而RubyMine有时会要求我自己不会使用的任何宝石(RubyMine会这样做)。
是否有可能在Gemfile中检测到我是从RubyMine捆绑的?或者一般情况:是否可以检测我正在捆绑的工具(Terminal,iTerm,RubyMine,TeamCity)?
我知道有特定的红宝石平台作为宝石的条件。我想要放入我的Gemfile是这样的:
tool :rubymine do
gem 'minitest-reporters'
gem 'ruby-debug'
end
结果当我从FOR EXAMPLE RubyMine运行捆绑时,我会安装minitest-reporter和ruby-debug,但我的同事从终端捆绑将不会安装这些宝石。
答案 0 :(得分:2)
一般来说,答案是使用gem install
安装额外的宝石,而不是将它们放在Gemfile中。
如果RubyMine依赖Bundler能够在运行时找到这些宝石,我会说这是一个错误。
答案 1 :(得分:0)
好的,我在这里找到了一些方法来告诉你,你是从RubyMine内部运行的
(将其放入Gemfile进行测试)
puts [
ORIGINAL_ENV['OLDPWD'],
ORIGINAL_ENV['RM_INFO'],
ORIGINAL_ENV['RUBYLIB'],
ORIGINAL_ENV['RUBYMINE_TESTUNIT_REPORTER'],
ORIGINAL_ENV['TEAMCITY_RAKE_RUNNER_MODE'],
ORIGINAL_ENV['TEAMCITY_RAKE_RUNNER_USED_FRAMEWORKS'],
ORIGINAL_ENV['XPC_SERVICE_NAME']
]
因此,举例来说,这样我就可以为RubyMine安装宝石,只有在真正需要时才能安装宝石
group :development do
# Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
gem 'web-console'
gem 'listen', '~> 3.0.5'
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
gem 'spring'
gem 'spring-watcher-listen', '~> 2.0.0'
if ORIGINAL_ENV && ORIGINAL_ENV['TEAMCITY_RAKE_RUNNER_MODE']
gem 'debase'
end
end
唯一不好的是,这将改变Gemfile.lock