我想利用heroku功能在Gemfile中根据https://blog.heroku.com/archives/2012/5/9/multiple_ruby_version_support_on_heroku指定我的Ruby版本。但是,虽然我想在heroku上运行JRuby,但我希望能够在CRuby上进行一些开发。问题是,当我.ruby-version
文件中的ruby规范与Gemfile中的ruby规范不同时,每当我尝试运行任何东西时,我都会收到以下抱怨:
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“只是红宝石”,我根据我看到的Heroku上可用的环境变量的存在插入了一个标准的ruby if
语句,而不是其他地方(即DYNO
),但我仍然感兴趣的是,是否有一种方法可以做到更多主线。
答案 0 :(得分:0)
尝试类似:
#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声明时可能会感到困惑