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/