带有git远程的Gem文件在heroku push上失败

Posted

技术标签:

【中文标题】带有git远程的Gem文件在heroku push上失败【英文标题】:Gem file with git remote failing on heroku push 【发布时间】:2012-07-18 10:56:19 【问题描述】:

我的 gemfile 中有以下行:

gem 'client_side_validations', :git => "git@github.com:Dakuan/client_side_validations.git", :branch => "master", ref: '2245b4174ffd4b400d999cb5a2b6dccc0289eb67'

它指向的 repo 是公开的,我可以在本地运行 bundle install / update 就好了。当我尝试推送到 Heroku 时,出现以下错误:

   Fetching git@github.com:Dakuan/client_side_validations.git
   Host key verification failed.
   fatal: The remote end hung up unexpectedly
   Git error: command `git clone 'git@github.com:Dakuan/client_side_validations.git' "/tmp/build_1xa9f06n4k1cu/vendor/bundle/ruby/1.9.1/cache/bundler/git/client_side_validations-56a04875baabb67b5f8c192c6c6743df476fd90f" --bare --no-hardlinks` in directory /tmp/build_1xa9f06n4k1cu has failed.

! !无法通过 Bundler 安装 gem。 ! ! Heroku push 被拒绝,无法编译 Ruby/rails 应用

有人知道这里发生了什么吗?

【问题讨论】:

【参考方案1】:

改用这个 GitHub 网址:git://github.com/Dakuan/client_side_validations.git

git@github.com:… URL 是可写的 SSH 版本,需要使用连接到对存储库具有写入权限的 GitHub 帐户的 SSH 密钥进行身份验证。

git://github.com/… URL 是公开的只读版本。

由于您使用的 gem 位于公共 GitHub 存储库中,因此您也可以在 Gemfile 中使用此简写:

gem 'client_side_validations', :github => 'Dakuan/client_side_validations'

请参阅Bundler Git documentation 了解更多信息。

【讨论】:

是的,那是獾。感谢您的帮助! 不要忘记运行捆绑安装以更新您的 gemfile.lock 并在更改为 github 公共 url 后提交您的更改 没想到这个问题这么简单的解决方法。谢谢!【参考方案2】:

第二个答案很晚,因为我遇到了 Heroku 构建日志的一些令人困惑的输出,这让我有一段时间感到困惑。

如果您的 Gemfile 中有多个 Github 托管的 gem,其中一个无法访问(在我的情况下,我不小心指向了我的私人仓库),构建日志会抛出类似 Username not found 或 @987654322 的错误@ 表示 所有 Github 托管的 gem - 甚至那些可用的。

【讨论】:

以上是关于带有git远程的Gem文件在heroku push上失败的主要内容,如果未能解决你的问题,请参考以下文章

git push heroku master 因解析错误而失败 - 哪个文件?

使用带有 bootstrap-sass gem 的 Rails 4 无法让 CSS 在 Heroku 上工作

git push heroku master 失败 / RoR 应用程序

Heroku git push 不更新节点模块

替换远程 git repo (Heroku)

git push 与 git push heroku master