繁体   English   中英

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

[英]Can't deploy Rails app to Heroku, “Invalid RUBY_VERSION”

我正在尝试将我的应用程序推送到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。 我按照这里的步骤操作,我的Gemfile顶部包括:

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

gem 'rails', '3.2.13'

当我运行“heroku run'ruby -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

你的Gemfile有一个错误,行require 'addressable/uri' 你不能在Gemfile使用require 加载路径尚未设置,因此您将获得Bundler捕获的LoadError并生成错误消息。

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

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

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

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

gem 'addressable', :require => ['addressable/uri', 'addressable/template']

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

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

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

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

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

gem 'rails_12factor'

所有这些技巧应该至少使它起作用。

编辑

为什么require 'addressable/uri' 删除它并添加gem 'addressable'代替。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM