检测Gemfile中的捆绑源

时间:2014-01-07 13:22:22

标签: ruby bundler rubymine gemfile

我正在尝试尽可能多地使用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,但我的同事从终端捆绑将不会安装这些宝石。

2 个答案:

答案 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