3

我正在尝试将我的应用程序推送到 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
4

2 回答 2

4

您的Gemfile, 行中有错误require 'addressable/uri'。您不能requireGemfile. 加载路径尚未设置,因此您会得到一个LoadErrorBundler 捕获并生成错误消息。

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

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

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

如果您确实需要不止一件事,则可以使用数组:

gem 'addressable', :require => ['addressable/uri', 'addressable/template']
于 2013-08-09T14:26:47.947 回答
0

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

1)当然,假设您在 Rails 根文件夹中,并且您less Gemfile是上面的实际文件夹。更改后您也这样做bundle了。

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

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

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

gem 'rails_12factor'

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

编辑

为什么require 'addressable/uri'会有?删除它并添加gem 'addressable'

于 2013-08-09T01:31:15.613 回答