2

我一直在尝试解决这个错误几个小时,但没有取得任何进展。我试过在不同的环境中运行 bundle install ,但没有运气。我不确定发生了什么,我觉得错误不再提供相关反馈。但是,我使用的是 Ruby 1.9.3,当我推送它时说 Heroku 使用的是 ruby​​ 2.0.0。这可能与它有关吗?

Castillos-MacBook-Pro:reservester-nysum13 castillo$ git push heroku master
Identity added: /Users/castillo/.ssh/id_rsa (/Users/castillo/.ssh/id_rsa)
Counting objects: 66, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (51/51), done.
Writing objects: 100% (66/66), 26.25 KiB, done.
Total 66 (delta 4), reused 38 (delta 1)

-----> Ruby/Rails app detected
-----> Using Ruby version: ruby-2.0.0
-----> Installing dependencies using Bundler version 1.3.2
       Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin --deployment
       You are trying to install in deployment mode after changing
       your Gemfile. Run `bundle install` elsewhere and add the
       updated Gemfile.lock to version control.
       You have added to the Gemfile:
       * debugger
       Bundler Output: You are trying to install in deployment mode after changing
       your Gemfile. Run `bundle install` elsewhere and add the
       updated Gemfile.lock to version control.

       You have added to the Gemfile:
       * debugger
 !
 !     Failed to install gems via Bundler.
 !

 !     Push rejected, failed to compile Ruby/Rails app

To git@heroku.com:guarded-sierra-5306.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:guarded-sierra-5306.git'

gem 'debugger' 最初被放置在环境组之外。我将其移至开发组并重新运行捆绑包。

这是我的 Gemfile

source 'https://rubygems.org'

gem 'rails', '3.2.13'
gem 'therubyracer'
gem 'twitter-bootstrap-rails'
gem 'carrierwave'
gem 'rmagick'
gem "fog", "~> 1.3.1"
gem "devise"
gem "figaro"
gem "galetahub-simple_captcha", :require => "simple_captcha"

group :development do
    gem 'annotate'
    gem 'sqlite3'
    gem 'rspec-rails', '~> 2.0'
    gem 'debugger'
end

group :production do
    gem 'pg'
end

group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'
4

4 回答 4

5

我得到了类似的错误。我尝试手动删除 Gemfile.lock 文件,重新捆绑,将其推送到 git,但仍然没有运气。但最后我通过将我的 rvm 版本更改为 ruby​​ 2.0.0 使其工作,使用此命令预编译资产

RAILS_ENV=production bundle exec rake assets:precompile

并删除 Gemfile.lock,重新捆绑,并将其推送到 github。最后一部分,当您推送到 heroku 时,使用您的分支而不是您的 master,这是因为您没有使用以下命令将 master 分支部署到 heroku master 分支:

git push heroku 你的分支:master

于 2013-06-28T19:18:38.297 回答
3

我也有类似的情况。Heroku 并不支持所有的 ruby​​ 版本。您可能正在使用不受支持的版本。

  1. 检查Heroku Ruby 支持的版本
  2. 更改您的本地 ruby​​ 版本。例如,如果您使用的是 rbenv rbenv local 2.1.6
  3. bundle install
  4. 将更改推送到herokugit push heroku master
于 2015-05-14T16:36:59.457 回答
0

您不能指望 Heroku 知道您在本地运行的 Ruby 版本 :-) 如果您希望 Heroku 使用特定版本,请告诉它。例如,添加ruby '1.9.3'到您的 Gemfile。

看起来您bundle install在将 gem 放入开发组后没有重新运行?试试看。

然后将所有更改添加到 git、commit 和 push。

于 2013-06-27T12:17:15.227 回答
-2

这个问题是因为您将错误(旧)Gemfile.lock 提交到 heroku 服务器。添加/删除 gem 后,您需要在 heroku 上更新 Gemfile.lock。

执行以下步骤:

  1. 保存现有 heroku 应用程序的 HEROKU_APP_NAME (HEROKU_APP_NAME.herokuapp.com)
  2. 从https://dashboard.heroku.com/apps删除 heroku 应用程序并创建一个新应用程序
  3. 将新的 heroku 应用重命名为旧的 HEROKU_APP_NAME
  4. 从你的 git repo 中删除 Gemfile.lock
  5. 从本地项目中删除 Gemfile.lock 并形成 .gitignore (如果它存在)
  6. 运行捆绑安装
  7. 提交对 git repo 的更改(新创建的 Gemfile.lock )
  8. 运行 git push heroku master
于 2014-05-15T20:14:00.647 回答