我想利用heroku功能在Gemfile中指定我的Ruby版本,根据https://blog.heroku.com/archives/2012/5/9/multiple_ruby_version_support_on_heroku.然而,虽然我想在heroku上运行JRuby,但我希望能够在CRuby上进行一些开发。问题是,每当我试图运行任何东西时,当我的.ruby-version
文件中的ruby规范与Gemfile中的不同时,我都会收到以下抱怨:
Your Ruby engine is ruby, but your Gemfile specified jruby
有没有什么方法可以避免这个问题,而不必在CRuby中修改我的Gemfile?特别是,我可以让Gemfile中ruby的规范以这样的事情为条件,即这种抱怨将在开发中消失,但它仍然会对heroku生效(也不会破坏travis)。
我试图用将gem规范约束到生产组
group :production do
ruby ruby '1.9.3', engine: 'jruby', engine_version: '1.7.9'
end
但这对发展没有影响。
更新:意识到Gemfile"只是ruby",我插入了一个标准的rubyif
语句,该语句基于我在Heroku上看到的环境变量的存在,但在其他地方(即DYNO
)没有,但我仍然感兴趣的是,是否有一种更主流的方法可以做到这一点。
尝试以下操作:
#ruby=1.9.3
source 'https://rubygems.org'
if ENV["JRUBY"] || RUBY_PLATFORM == "java"
# https://devcenter.heroku.com/articles/ruby-support#ruby-versions
ruby '1.9.3', engine: 'jruby', engine_version: '1.7.10'
else
ruby '1.9.3'
end
注意:第一个注释是针对RVM的,因为在解析ruby声明时可能会混淆