0

我试图让一个旧的 Heroku 应用程序运行,但到目前为止失败了。$ heroku stack返回

=== <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 git@heroku.com:<app_name>.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:<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

Bundler似乎有问题,有什么想法吗?

4

1 回答 1

2

问题是由 Gemfile 的第 2 行引起的:

ruby '1.9.3'

从输出中我们可以看到正在运行的 Bundler 版本:

Gemfile detected, running Bundler version 1.0.7

ruby指令似乎是 Bundler 1.2 的功能,不适用于旧的 Bundler。我认为您现在可以安全地删除此ruby '1.9.3'行。


当然,您gem 'bundler', '1.3.0.pre.8'的 gemfile 中有。但这是先有鸡还是先有蛋的问题:在解析 Gemfile 之前不会安装新的 Bundler,但旧的 Bundler 无法解析它。

于 2013-02-18T15:10:49.967 回答