Heroku:在视图中显示Git修订哈希和时间戳?
假设我在Heroku上部署了一个Rails应用程序。 如何在我的视图中显示这些信息?
- 最后一次修订的Git哈希
- 最后一次修订的时间戳
Heroku使用提交哈希ENV['COMMIT_HASH']
设置环境变量。
至于时间戳,如果你在那里托管你的代码,你可以使用哈希命中github api 。 看起来ruby-github gem可以帮助你解决这个问题,或者你可以用HTTParty自己做 。
这样做的原因是因为当你的应用程序被部署到dyno网格上以服务请求时,它被编译成一个“slug”以便快速部署,而这个slug不再有git repo了。
Heroku上安装了砂砾 。 所以你可以使用它在那里打开存储库。
repo = Repo.new(Rails.root + '.git') last_commit = repo.commits.first p last_commit.id p last_commit.authored_date
另一种方法是使用rake任务进行部署,该任务从本地存储库获取所需的版本信息,并更新Heroku端的环境变量。 然后您可以使用标记,提交哈希或其他任何东西,而不必依赖Heroku方面的行为。
例如,如果您想在rake任务中使用最新标记:
def app_version %x[git describe --tags --abbrev=0].strip end
然后在你的任务的主体:
run "git push blah:blah blah" run "heroku config:add APP_VERSION=#{app_version}"
我希望能够直接从Heroku上的git获取这些信息,而不是间接地偷偷摸摸,但我从来没有弄清楚如何做到这一点。
我认为您需要将config.gem’grit’添加到您的Rails应用程序中,以便能够创建Repo对象。
你可以在这里阅读有关砂砾的信息http://github.com/mojombo/grit/