0

Gemfile.lock包含在.gitignore. 这是开发人员之间的协议,应该保持不变。有没有办法将代码推送到 Heroku?或者您可能会建议一些不使用 Git 部署应用程序的 Ruby 托管?

4

2 回答 2

1

要将其推送到 Heroku,您必须将其添加到您的存储库中。你为什么不想提交呢?建议在您的仓库中提交 Gemfile.lock(除非您正在开发 gem):

开发应用程序时,请检查您的 Gemfile.lock,因为您将在所有机器上使用捆绑器工具,并且捆绑器强制执行的精度对于应用程序来说是非常理想的。

于 2014-04-16T22:47:50.903 回答
0

因此,目前我们正在通过以下方式进行操作:

  • 我们的 Git 存储库不存储Gemfile.lock
  • 当我们需要推送到 Heroku 时,我们复制项目文件夹
  • 在复制origin远程中删除以防止意外推送到我们的 Git,只留下heroku
  • 进行提交,其中包括Gemfile.lock
  • 并将副本推送到 Heroku。

然后,如果我们在特殊情况下需要在 Heroku 上进行实时调试,我们不删除复制文件夹,将更改的文件从主文件夹复制到它,并进行小提交以将它们发布到 Heroku。

如果我们需要进行最终发布:

  • 我们在主目录中做了一个大的提交,
  • 制作主目录的干净副本,包含所有更改,
  • 做出额外的承诺以包括Gemfile.lock
  • 使用“强制”键将副本推送到 Heroku。

这可以防止我们在 Git 存储库中进行大量小型调试提交。

我们中的一些人有一个 Windows 批处理文件可以自动发布:

@echo off
rmdir /s /q heroku
xcopy /E /H our-app-folder heroku\
cd heroku
git remote remove origin
git add .
git add --force Gemfile.lock
git commit -m "Heroku push"
SET HOME=%HOMEDRIVE%%HOMEPATH%
git push heroku master -f
cmd /c heroku pg:reset DATABASE --confirm heroku-app-name
cmd /c heroku run rake db:migrate
cmd /c heroku run rake db:seed
cmd /c heroku restart
pause

我们需要做这一切,因为 Heroku 仅支持通过 Git 发布。

于 2014-04-17T10:02:41.587 回答