无法将Rails应用程序部署到Heroku,“无效的RUBY_VERSION”

时间:2013-08-09 01:05:20

标签: ruby-on-rails ruby heroku

我试图将我的应用推送到Heroku,但我无法解决此错误:

Delta compression using up to 2 threads.
Compressing objects: 100% (1554/1554), done.
Writing objects: 100% (1652/1652), 23.93 MiB | 369 KiB/s, done.
Total 1652 (delta 859), reused 0 (delta 0)

-----> Ruby/Rails app detected
 !
 !     Invalid RUBY_VERSION specified: There-was-an-error-in-your-Gemfile,-and-Bundler-    cannot-continue.
 !     Valid versions: ruby-2.0.0, ruby-1.9.3, ruby-1.9.2, ruby-1.8.7, ruby-1.9.3-jruby-    1.7.0, ruby-1.8.7-jruby-1.7.0, ruby-1.9.3-jruby-1.7.1, ruby-1.8.7-jruby-1.7.1, ruby-1.9.3-rbx-2.0.0dev, ruby-1.8.7-rbx-2.0.0dev
 !

 !     Push rejected, failed to compile Ruby/Rails app

To git@heroku.com:myapp.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:myapp.git'

我正在运行ruby 1.9.3p448。我按照here步骤操作,我的Gemfile顶部包括:

source 'http://rubygems.org'
ruby '1.9.3'

gem 'rails', '3.2.13'

当我跑步" heroku跑&#rub; -v'"它返回ruby 1.9.2p290。发生了什么事?

编辑:这是我的整个Gemfile:

source 'http://rubygems.org'
ruby '1.9.3'
gem 'rails', '3.2.13'

gem 'pg'

group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

gem 'devise'
gem 'nokogiri'
gem 'i18n'
gem 'paperclip'
gem 'kaminari'
gem 'rest-client'
require 'addressable/uri'

group :development do
  gem 'better_errors'
end

2 个答案:

答案 0 :(得分:4)

Gemfilerequire 'addressable/uri'中的错误。您无法在require内使用Gemfile。尚未设置加载路径,因此您将获得Bundler捕获的LoadError并生成错误消息。

Heroku正在尝试使用bundle platform --ruby来确定您要使用的Ruby版本,但是没有正确检测错误情况并将错误消息视为版本。这显然不是有效的版本,因此它会产生您看到的错误。

我猜你正在使用require,因为要使用Addressable gem,你需要addressable/uriaddressable/template(或两者),你不能只使用{ {1}}。在这种情况下,您可以使用Bundler的require 'addressable'选项:

:require

如果确实需要多个东西,可以使用数组:

gem 'addressable', :require => 'addressable/uri'

答案 1 :(得分:0)

只是想知道这是否会改变你的情况,因为你的Gemfile几乎看起来像我的,但是对于这些变化。

1)当然,假设您在Rails Root文件夹中,而less Gemfile是上面的实际文件夹。更改后你也bundle也做了。

2)改变 source 'https://rubygems.org'

3)可选哎呀,尝试将版本切换到ruby '2.0.0'只是为了通过它。

4)我认为这也是必要的:

gem 'rails_12factor'

所有这些技巧至少应该有效。

修改

为什么require 'addressable/uri'在那里?删除此内容并添加gem 'addressable'