Heroku:在视图中显示Git修订哈希和时间戳?

问题描述:

假设我在Heroku上部署了Rails应用程序。如何在我的视图中显示这些信息?Heroku:在视图中显示Git修订哈希和时间戳?

  • Git的哈希最后修订
  • 的时间戳的最后修订

Heroku用提交散列ENV['COMMIT_HASH']设置环境变量。

至于时间戳,如果您在那里托管您的代码,您可以使用散列点击github api。看起来ruby-github gem可以帮助你,或者你可以自己做HTTParty

+7

'ENV ['COMMIT_HASH']'适用于Bamboo,但不适用于Cedar。 – 2012-02-29 17:20:37

有安装在Heroku grit。所以你可以使用它打开仓库。

repo = Repo.new(Rails.root + '.git') 
last_commit = repo.commits.first 
p last_commit.id 
p last_commit.authored_date 
+1

感谢您的提示。不幸的是,在heroku控制台中它不适用于我(它在应用程序本身会有所不同吗?)。在Repo.new之后,我得到'Grit :: NoSuchPathError:'任何想法? – 2009-10-18 14:43:54

+0

试图解决类似的问题,我可以证实,这不符合描述。 – Andrew 2011-01-27 06:29:48

+1

这不起作用,因为.git目录在Heroku上不可用,至少不在当前的Cedar堆栈中。 – 2012-08-08 12:21:49

我认为你需要config.gem'砂砾'到你的Rails应用程序,以便能够创建回购对象。

你可以阅读砂砾这里http://github.com/mojombo/grit/

这样做的原因是因为当你的应用部署到赛道网格服务请求时,它就是被编译成“弹头”的快速部署,并将该渣屑没有按”不再有git repo了。

+0

这似乎是第一个评论(由Rich Apodaca)回答http://stackoverflow.com/a/1584452/1034080(由Damien MATHIEU)的回应。 – 2012-01-12 15:23:37

另一种方法是使用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上直接获取这些信息,而不是间接偷偷摸摸地找到它,但我从来没有想过如何做到这一点。