如何使用包含在.gitignore中的Gemfile.lock推送到Heroku

时间:2014-04-16 13:48:03

标签: heroku gitignore gemfile.lock

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

2 个答案:

答案 0 :(得分:1)

要将其推送到Heroku,您必须将其添加到您的仓库中。你为什么不想承诺呢?它是recommended在你的回购中提交Gemfile.lock(除非你正在开发一个gem):

  

在开发应用程序时,请检查您的Gemfile.lock,,因为您将在所有计算机上使用捆绑工具,并且捆绑程序强制执行的精度非常适合应用程序。

答案 1 :(得分:0)

所以,目前我们正在以下列方式做事:

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

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

如果我们需要做最后的出版物:

  • 我们在主目录中进行一次大提交,
  • 制作主目录的干净副本,包含所有更改
  • 进行额外提交以包含Gemfile.lock
  • 使用“force”键将副本推送到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发布。