捆绑器:根据平台指定 ruby 版本
bundler: specify ruby version based on platform
我们正在为我们编写的微服务在 MRI 和 JRuby 上进行一些 A/B 测试。
我需要我的服务器或任何本地开发人员使用指定版本的 JRuby 或 MRI。
我通读了 Bundler's docs 并认为我理解了 ruby 引擎的用法,可以这样使用:
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
如何将捆绑器与平台一起使用以指定特定于 user/server 平台的 ruby 版本 运行ning?
从当前 Bundler
开始,您不能这样做,因为 :platforms
仅适用于 gem
声明...您可以获得的最接近的是 "runtime" 决定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
我们正在为我们编写的微服务在 MRI 和 JRuby 上进行一些 A/B 测试。
我需要我的服务器或任何本地开发人员使用指定版本的 JRuby 或 MRI。
我通读了 Bundler's docs 并认为我理解了 ruby 引擎的用法,可以这样使用:
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
如何将捆绑器与平台一起使用以指定特定于 user/server 平台的 ruby 版本 运行ning?
从当前 Bundler
开始,您不能这样做,因为 :platforms
仅适用于 gem
声明...您可以获得的最接近的是 "runtime" 决定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