是否可以使用Ruby 1.9.3在Heroku上运行我的Rails应用程序?如果是这样,怎么样?

时间:2012-01-09 05:52:33

标签: ruby-on-rails heroku ruby-1.9.3 cedar

我尝试了这个提示:https://github.com/thoughtbot/laptop/pull/14#issuecomment-3192270

在部署时,我看到了

-----> Using RUBY_VERSION: ruby-1.9.3-p0

但是我的日志显示环境变量不受尊重

INFO  ruby 1.9.2 (2011-07-09) [x86_64-linux]

接受Hack​​y /实验解决方案!

编辑:我在雪松堆上。

6 个答案:

答案 0 :(得分:18)

以下是每个引用此问题的人的更新... Heroku现在允许您在Gemfile中指定ruby版本,这要归功于他们添加了最新版本的bundler。

首先运行:

gem install bundler --pre

然后将ruby'1.9.3'添加到您的Gemfile中。

source 'http://rubygems.org'

ruby '1.9.3'
gem  'rails', '3.2.3'

Heroku的完整版本详情为http://blog.heroku.com/archives/2012/5/9/multiple_ruby_version_support_on_heroku/

答案 1 :(得分:8)

是的,所以Ruby 1.9.3肯定是可能的。正如你所说,hacky /实验解决方案被接受了 - 这绝对是其中之一。

实际上非常简单;

  1. 为您的应用启用Heroku Labsuser_env_compile功能。

  2. 将heroku配置变量设置为RUBY_VERSION为ruby-1.9.3-p0(heroku config:add RUBY_VERSION=ruby-1.9.3-p0

  3. 确保heroku PATH配置变量前面有binheroku config:add PATH=bin:vendor/bundle/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin

  4. 下次部署时,您应该使用1.9.3查看您的应用程序 - 部署输出也会显示此内容;

    -> Heroku receiving push
    -----> Ruby/Rails app detected
    -----> Using RUBY_VERSION: ruby-1.9.3-p0
    -----> Installing dependencies using Bundler version 1.1.rc.7
    Running: bundle install --without development:test --path vendor/bundle --binstubs bin/ --deployment
    

答案 2 :(得分:5)

自5月10日起,可以更轻松地使用Ruby 1.9.3。只需看看Heroku的博客: http://blog.heroku.com/archives/2012/5/9/multiple_ruby_version_support_on_heroku/

答案 3 :(得分:1)

我今天能够在Heroku雪松上的Ruby 1.9.3-p0上运行Rails 3.2应用程序

我按照上述步骤操作 http://railsapps.github.com/rails-heroku-tutorial.html

遇到了problem locally with 1.9.3 and openssl

但是能够部署并运行应用程序 http://mccaffrey-rails32-193.herokuapp.com

没有Procfile

在Gemfile中使用thin和pg

我添加了一些调试输出,因此您可以看到rails和ruby版本信息

基本的rails应用程序slug大小为28.9MB,这很疯狂。

答案 4 :(得分:1)

我遇到了同样的问题:在我的Gemfile中指定1.9.3,但它使用的是1.9.2。这修好了它:

heroku config:add PATH=bin:vendor/bundle/ruby/1.9.1/bin:/usr/local/bin:/usr/bin:/bin

答案 5 :(得分:0)

根据Heroku Cedar堆栈定义here Cedar目前仅支持MRI 1.9.2。您是否尝试过联系Heroku支持?他们通常很敏感。

编辑:有时可以“愚弄”平台在Heroku上运行一些二进制文件,例如running Haskell,所以如果你真的很专注,你可以打包一些东西。我想这对于MRI来说并不容易。