我在尝试将git push heroku master
捆绑包失败时尝试将我的rails项目推送到heroku位,并显示以下消息:
Bundler Output: Fetching gem metadata from https://rubygems.org/.........
Fetching additional metadata from https://rubygems.org/..
Fetching git://github.com/justinfrench/formtastic.git
Fetching git://github.com/activerecord-hackery/ransack.git
Fetching git://github.com/gregbell/active_admin.git
Could not find jwt-0.1.12 in any of the sources
!
! Failed to install gems via Bundler.
!
! Push rejected, failed to compile Ruby app
To git@heroku.com:murmuring-mountain-9361.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:murmuring-mountain-9361.git'
似乎jwt是我的一个宝石的依赖项,但它在我的本地环境中安装得很好。我尝试在我的gemfile中明确声明gem 'jwt', '0.1.12'
,这在本地工作正常,但在heroku上没有,我尝试删除Gemfile.lock并再次生成它。我甚至尝试删除heroku上的app实例并再次创建它。
以下要点是我的宝石文件:https://gist.github.com/anonymous/84d3fc00566e036729cd
我在开发环境中使用这个流浪盒:https://github.com/ejholmes/vagrant-heroku
答案 0 :(得分:8)
如果您在过去几天更新了宝石,那么您将获得一个被拉扯的错误版本。它被重新发布为1.0.0,因为它的API略有不同。我建议使用0.1.11或切换到1.0 ...谢谢,对不起!
答案 1 :(得分:4)
当你使用的Gems版本(通过你的Gemfile.lock)从RubyGems.org中被淘汰时,你会得到这个,而Heroku试图在部署时抓住它们。
你可以看到0.1.12的jwt被http://rubygems.org/gems/jwt/versions拉了。要做的就是查看你的Gemfile.lock,看看哪个gem声明了对0.1.12的依赖,然后分叉那个gem并使版本崩溃,然后使用你的分叉版本。或者联系宝石所有者并给他们创建宝石以抵消依赖。