我试图将我的应用推送到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
答案 0 :(得分:4)
Gemfile
行require 'addressable/uri'
中的错误。您无法在require
内使用Gemfile
。尚未设置加载路径,因此您将获得Bundler捕获的LoadError
并生成错误消息。
Heroku正在尝试使用bundle platform --ruby
来确定您要使用的Ruby版本,但是没有正确检测错误情况并将错误消息视为版本。这显然不是有效的版本,因此它会产生您看到的错误。
我猜你正在使用require
,因为要使用Addressable gem,你需要addressable/uri
或addressable/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'
。