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'require内では使用できませんGemfile。ロード パスはまだ設定されていないため、LoadErrorBundler がキャッチしてエラー メッセージを生成します。

Heroku は、使用bundle platform --rubyする Ruby のバージョンを判別するために使用しようとしていますが、エラー状態を適切に検出して、エラー メッセージをバージョンとして処理していません。これは明らかに有効なバージョンではないため、表示されているエラーが発生します。

requireAddressable gem を使用するには、どちらaddressable/uriaddressable/template(または両方) を必要とする必要があり、単に使用できないため、使用していると思いますrequire 'addressable'。この場合:require、Bundler のオプションを使用できます。

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

複数のものが必要な場合は、配列を使用できます。

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