Git推送Heroku引发Bundler错误
我试图让一个旧的Heroku应用程序运行,失败迄今。 $ heroku stack
返回Git推送Heroku引发Bundler错误
=== <app_name> Available Stacks
bamboo-ree-1.8.7
cedar
* bamboo-mri-1.9.2 (prepared, will migrate on next git push)
,推动的时候,我得到如下:
$ git push heroku master
Counting objects: 48, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (31/31), done.
Writing objects: 100% (31/31), 4.00 KiB, done.
Total 31 (delta 18), reused 0 (delta 0)
-----> Ruby/Rails app detected
-----> Detected Rails is not set to serve static_assets
Installing rails3_serve_static_assets... done
-----> Configure Rails 3 to disable x-sendfile
Installing rails3_disable_x_sendfile... done
-----> Configure Rails to log to stdout
Installing rails_log_stdout... done
-----> Gemfile detected, running Bundler version 1.0.7
Unresolved dependencies detected; Installing...
/tmp/build_3cljt2m8e8r7e/Gemfile:2:in `evaluate': undefined method `ruby' for #<Bundler::Dsl:0x00000003221778> (NoMethodError)
from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler/dsl.rb:7:in `instance_eval'
from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler/dsl.rb:7:in `evaluate'
from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler/definition.rb:17:in `build'
from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler.rb:128:in `definition'
from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler/cli.rb:225:in `install'
from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler/vendor/thor/task.rb:22:in `run'
from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task'
from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler/vendor/thor.rb:246:in `dispatch'
from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler/vendor/thor/base.rb:389:in `start'
from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/bin/bundle:13:in `<top (required)>'
from /usr/ruby1.9.2/bin/bundle:19:in `load'
from /usr/ruby1.9.2/bin/bundle:19:in `<main>'
FAILED: http://devcenter.heroku.com/articles/bundler
! Heroku push rejected, failed to install gems via Bundler
To [email protected]:<app_name>.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to '[email protected]:<app_name>.git'
当前的Gemfile:
source 'https://rubygems.org'
ruby '1.9.3'
gem 'bundler', '1.3.0.pre.8'
gem 'rails', '~> 3.2'
gem 'jquery-rails', '~> 2.2'
gem 'slim', '~> 1.3'
gem 'dynamic_form', '~> 1.0'
gem 'state_machine', '~> 1.1'
gem 'draper', '~> 1.1'
gem 'bcrypt-ruby', '~> 3.0', :require => 'bcrypt'
gem 'thin', '~> 1.5'
gem 'twitter-bootstrap-rails', '~> 2.2'
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'less-rails', '~> 2.2'
gem 'coffee-rails', '~> 3.2.1'
gem 'therubyracer', '~> 0.11', :platforms => :ruby
gem 'uglifier', '>= 1.0.3'
end
group :development do
gem 'sqlite3', '~> 1.3'
gem 'pry', '~> 0.9'
gem 'better_errors', '~> 0.3'
gem 'binding_of_caller', '~> 0.6'
end
group :production do
gem 'pg', '~> 0.14'
end
似乎有一个问题与捆扎机,任何想法?
问题是由Gemfile中的2号线造成的:
ruby '1.9.3'
从输出我们可以看到捆扎机运行的版本:
Gemfile detected, running Bundler version 1.0.7
但ruby
指令似乎捆扎机1.2功能并不会与旧Bundler一起工作。我认为你现在可以安全地删除这个ruby '1.9.3'
行。
当然,你有你的gemfile中的gem 'bundler', '1.3.0.pre.8'
。但是这是鸡与鸡蛋的问题:在分析Gemfile之前不会安装新的Bundler,但旧的Bundler无法解析它。
哦,对。现在删除了“红宝石1.9.3”声明并推送作品。现在又犯了一个错误,但那是另一个错误。谢谢! – tbuehlmann 2013-02-18 15:35:54
那么解决这个问题的实际方法是什么?我不认为删除你的ruby版本规范是很好的做法。 – light24bulbs 2014-08-16 19:42:24
https://devcenter.heroku.com/articles/ruby-versions – gabrielhilal 2013-02-18 15:14:05
也https://blog.heroku.com/archives/2012/5/9/multiple_ruby_version_support_on_heroku/ – gabrielhilal 2013-02-18 15:17:03