假设我在Heroku上部署了一个 Rails 应用程序。如何在我的视图中显示这些信息?
- 上次修订的 Git 哈希
- 上次修订的时间戳
Heroku 使用提交哈希设置环境变量ENV['COMMIT_HASH']
。
至于时间戳,如果你在那里托管你的代码,你可以用散列访问github api 。看起来ruby-github gem可以帮助你,或者你可以自己用HTTParty 来做。
这样做的原因是,当您的应用程序部署到 dyno 网格以服务请求时,它会被编译成一个“slug”以进行快速部署,并且这个 slug 不再具有 git repo。
另一种方法是使用 rake 任务进行部署,该任务从本地 repo 获取您想要的版本信息并更新 Heroku 端的环境变量。然后,您可以使用标签、提交哈希或其他任何东西,而不必依赖 Heroku 端的行为。
例如,如果你想使用 latest 标签,在你的 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 获取该信息,而不是间接地偷偷溜进去,但我一直无法弄清楚如何做到这一点。
Heroku上安装了砂砾。因此,您可以使用它打开那里的存储库。
repo = Repo.new(Rails.root + '.git')
last_commit = repo.commits.first
p last_commit.id
p last_commit.authored_date
我认为您需要将 config.gem 'grit' 配置到 Rails 应用程序中,以便能够创建 Repo 对象。
你可以在这里阅读关于砂砾http://github.com/mojombo/grit/