2013-06-03 27 views
2

我想在Heroku上运行我的应用程序时使用特定版本的Ruby。如何从RVM配置文件中指定要在Heroku上使用的ruby版本

如解释here,你只需要在你的Gemfile中添加一行如ruby "2.0.0"

但是,由于我在本地使用RVM,因此我已经在项目根目录中的.ruby-version文件中指定了ruby版本,该文件只包含行ruby-2.0.0-p0

为了避免代码重复,我希望只在一个地方指定版本,以便我确信在开发和Heroku中始终使用相同的版本。

有没有办法做到这一点?

回答

5

Gemfile是Ruby代码,所以你可以写一些红宝石从.ruby-version出的版本和值传递给ruby方法,而不是硬编码的版本字符串。

如果.ruby-version文件在同一目录中,这样的事情应该工作:

ruby File.read(".ruby-version").strip.split("-").first 

如果.ruby-version文件中包含“1.9.3-P327”,例如,该行就相当于:

ruby "1.9.3" 
+0

谢谢,这正是我一直在寻找的! –

1

不,您不能指定要在Heroku上使用的修补程序级别 - 它们会为您管理修补程序级别。您需要跟踪其更新日志,以了解补丁程序级别何时发生变化。所以你需要确保你在本地使用相同的补丁级别,对于Ruby 2.0.0,它现在是p195。

+0

对不起,我没有让自己清楚,我不是要指定在Heroku上使用的PATCHLEVEL而是从中提取.ruby版本文件的版本,并在Gemfile中使用它,所以它的.ruby版本包含1.9.3-psomething,1.9.3被使用,如果我指定2.0.0-p使用2.0.0的东西。 –

+1

你只能使用gemfile来做到这一点,所以需要重复:(这个功能请求被打开了,但是不太可能被执行,似乎rvm可以从Gemfile中读取?https://github.com/heroku/heroku- buildpack-ruby/issues/63 – catsby

相关问题