在Gemfile for Windows和Linux / OS X中指定不同的Ruby版本(例如1.9.3 vs 2.1)?

时间:2014-07-14 18:43:50

标签: ruby-on-rails ruby linux windows gem

我正在使用Ruby on Rails项目,我们有Windows和Linux计算机。该项目使用Ruby 2.1,但作为一个Windows开发人员,我需要使用较低版本的Ruby,如ruby 1.9.3或Ruby 2.0,以便顺利地进行本地开发工作。

因此,为了自动为我的Rails项目实现自定义Ruby版本,我尝试修改Gemfile以为每个平台隔离不同的Gems和Ruby版本:

platforms :ruby do # linux & Mac only
  ruby '2.1.0' #doesn't work, still tries to load ruby 1.9.3
  gem 'puma', '~> 2.7.1' #works
end

platforms :mswin do #Windows only
  ruby '1.9.3' #doesn't work, overrides Linux/mac users to Ruby 1.9.3 rather than 2.1
  gem 'thin' # works
end

platforms :rubyplatforms :mswin显然仅适用于指定Gems,而不适用于指定Ruby版本。如何设置我的本地Windows开发环境,以便我可以在同一个Gemfile中自动处理较低/不同的Ruby版本,而不会影响我的同事?

注意:

.rubyversion读取2.1.0虽然我可以.gitignore为每个环境指定此文件,但Heroku要求我们在Gemfile中指定一个Ruby版本 - 所以我们需要一些方法来解决这是在Gemfile级别。

1 个答案:

答案 0 :(得分:0)

Gemfile是用Ruby实现的DSL,所以你可以在这里调用Ruby代码:

ruby RUBY_PLATFROM =~ /win/ ? '1.9.2' : '2.1.0'