我已经在Heroku上使用自定义buildpack一段时间了,并且在推送期间一直使用BUILDPACK_URL env变量将其启动。
最近我点了子弹并从Ruby 1.9.3 / Rails 3.2.14升级到Ruby 2.2.0 / Rails 4.2.1.rc1 - 我的开发机器上的一切正常,但我现在无法推送到Heroku ,我收到以下错误:
~/documents/coding/test$ heroku fork -a vfacelift vupgrade
~/documents/coding/test$ heroku config:unset BUILDPACK_URL -a vupgrade
~/documents/coding/test$ heroku buildpack:set https://github.com/tomwolfe/heroku-buildpack-gsl-ruby.git -a vupgrade
~/documents/coding/test$ git push vupgrade vupgrade:master
Fetching repository, done.
Counting objects: 9723, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (4943/4943), done.
Writing objects: 100% (9723/9723), 82.88 MiB | 758.00 KiB/s, done.
Total 9723 (delta 6948), reused 6422 (delta 4535)
-----> Fetching custom git buildpack... done
-----> Ruby app detected
-----> Compiling Ruby/Rails
!
! Command: 'set -o pipefail; curl --fail --retry 3 --retry-delay 1 --connect-timeout 3 --max-time 30 https://s3-external-1.amazonaws.com/heroku-buildpack-ruby/ruby-2.2.0.tgz -s -o - | tar zxf -' failed unexpectedly:
!
! gzip: stdin: unexpected end of file
! tar: Child returned status 1
! tar: Exiting with failure status due to previous errors
!
! Push rejected, failed to compile Ruby app
To git@heroku.com:vupgrade.git
! [remote rejected] upgrade -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:vupgrade.git'
根据其他SO答案,我首先从分叉版本取消设置BUILDPACK_URL env变量并使用heroku buildpack:set
CLI命令。我也尝试将STACK env变量设置为cedar-14,但这似乎没有什么区别。
由于buildpack已经运行了一段时间并且已针对Rails 4进行了更新,我怀疑问题就在那里。
我还尝试使用https://github.com/ddollar/heroku-buildpack-multi.git buildpack并将.buildpacks文件包含在内:
https://github.com/tomwolfe/heroku-buildpack-gsl-ruby.git
https://github.com/heroku/heroku-buildpack-ruby.git
然后我尝试从.buildpacks文件中删除buildpack-ruby,因为我注意到Heroku无论如何都通过Gemfile检测到应用程序为Ruby。这两个都像以前一样失败了。
非常感谢任何帮助...
谢谢, 罗伯特
答案 0 :(得分:0)
我之前在Stack Overflow上看到过这个错误:
git push github master
To git@github.com:Joey-project/project.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'git@github.com:Joey-project/project.git'
我认为发生这种情况的主要原因之一是因为有人试图将分支推送到同时更新的远程分支。
一般解决方案是使用以下命令的变体:
git fetch github; git merge github/master
我注意到heroku: Gemfile.lock is required issue可以提出如何解决问题的想法。
我希望它有所帮助!
答案 1 :(得分:0)
似乎在AWS上已更改目录结构,其中heroku正在存储其buildpack。有关详细信息,请参阅https://github.com/heroku/heroku-buildpack-ruby/issues/304。我分叉https://github.com/tomwolfe/heroku-buildpack-gsl-ruby.git buildpack,将STACK添加到ruby URL,允许buildpack用户将其设置为cedar或cedar-14等,然后在master上创建一个pull请求。
希望这将有助于将来的人。
罗伯特