bundler:根据平台指定ruby版本

时间:2015-02-27 22:41:48

标签: ruby bundler jruby

我们正在对MRI和JRuby进行一些A / B测试,以获得我们已经写过的微服务。

我需要我的服务器或任何本地开发人员使用指定版本的JRuby或MRI。

我已经阅读了Bundler's docs并认为我理解使用红宝石引擎会像这样使用:

platforms :jruby do
  ruby '1.9.3', engine: :jruby, engine_version: '1.7.19'
  gem 'bson'
end

platforms :ruby do
  ruby '2.2.0', engine: :ruby, engine_version: '2.2.0'
  gem 'bson_ext'
end

但是如果我$which ruby我得到:.rvm/rubies/jruby-1.7.19/bin/ruby然后运行bundle install我得到:

Your Ruby engine is jruby, but your Gemfile specified ruby

如何在平台上使用bundler来指定特定于用户/服务器运行平台的ruby版本?

1 个答案:

答案 0 :(得分:1)

截至当前Bundler,您不能这样做,因为:platforms仅适用于gem声明...您可以得到的最接近的事情是"运行时"基于Ruby加载 Gemfile 的决策逻辑:

if defined? JRUBY_VERSION
  ruby '1.9.3', engine: :jruby, engine_version: '1.7.19'
else
  ruby '2.2.0', engine: :ruby, engine_version: '2.2.0'
end

platforms :jruby do
  gem 'bson'
end

platforms :ruby do
  gem 'bson_ext'
end