Gemfile.lock未签入 - Heroku

时间:2010-11-23 16:29:29

标签: ruby-on-rails git heroku bundler

在尝试“git push heroku master”时,我不断收到错误:

Counting objects: 266, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (239/239), done.
Writing objects: 100% (266/266), 222.68 KiB, done.
Total 266 (delta 55), reused 0 (delta 0)

-----> Heroku receiving push
-----> Rails app detected
-----> Detected Rails is not set to serve static_assets
       Installing rails3_serve_static_assets... done
-----> Gemfile detected, running Bundler version 1.0.3
       Unresolved dependencies detected; Installing...
       Using --without development:test
       You have modified your Gemfile in development but did not check
       the resulting snapshot (Gemfile.lock) into version control

       You have deleted from the Gemfile:
       * version: 1.0.6
       FAILED: http://docs.heroku.com/bundler
 !     Heroku push rejected, failed to install gems via Bundler

error: hooks/pre-receive exited with error code 1
To git@heroku.com:freezing-frost-65.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:freezing-frost-65.git'

我尝试将Gemfile和Gemfile.lock添加到git但无济于事。我尝试删除.bundle目录和Gemfile.lock,但同样的错误。

6 个答案:

答案 0 :(得分:15)

bundler 1.0.6版存在问题 您需要在开发计算机上运行“gem update bundler”以将bundler更新到1.0.7。然后,您需要在应用程序中运行bundle update以生成新的Gemfile.lock文件。您将看到Gemfile.lock已更新。提交这个新的Gemfile.lock并再次推送到heroku。

答案 1 :(得分:8)

我通过打开Gemfile.lock并删除以下两行来修复我的行:

PLATFORMS
  x86-mingw32

所以现在我只需要创建一个捆绑包然后从锁定文件中删除它的脚本。

答案 2 :(得分:6)

GemfileGemfile.lock文件都需要包含在git存储库中。 确保您没有在.gitignore文件中忽略它们。

另外,请确保在本地计算机上使用Bundler> = 1.0.0来生成Gemfile.lock。我使用的是过时的版本,比如Bundler 0.9x,它会失败。

最后但并非最不重要的,如果你有Gemfile.lock,请更新它。

$ cd /path/to/project
$ bundle update

答案 3 :(得分:5)

答案 4 :(得分:3)

我删除了我的Gemfile.lock文件下PLATFORMS下的“mingw”行,添加并提交给git,将其推送到git,然后将所有内容推送到heroku,显然它现在可以正常工作。

答案 5 :(得分:0)

在您的应用程序目录中,在bin子目录中修改文件

bin/bundle 
bin/rails 
bin/rake 

而不是

'#!/usr/bin/env ruby.exe

必须是

'#!/usr/bin/env ruby

(感谢上一篇文章)

确保gemfile.lock中没有对windows的引用 - 它们可以被删除。

然后

git push heroku master

如果仍有问题,请使用heroku logs(将文本复制到文本编辑器可以更轻松地剪切和粘贴解决方案)。