8

假设我在Heroku上部署了一个 Rails 应用程序。如何在我的视图中显示这些信息?

  • 上次修订的 Git 哈希
  • 上次修订的时间戳
4

5 回答 5

5

Heroku 使用提交哈希设置环境变量ENV['COMMIT_HASH']

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

于 2010-12-24T00:46:11.500 回答
2

这样做的原因是,当您的应用程序部署到 dyno 网格以服务请求时,它会被编译成一个“slug”以进行快速部署,并且这个 slug 不再具有 git repo。

于 2010-09-09T00:20:30.830 回答
2

另一种方法是使用 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 获取该信息,而不是间接地偷偷溜进去,但我一直无法弄清楚如何做到这一点。

于 2015-01-08T05:56:09.000 回答
1

Heroku上安装了砂砾。因此,您可以使用它打开那里的存储库。

repo = Repo.new(Rails.root + '.git')
last_commit = repo.commits.first
p last_commit.id
p last_commit.authored_date
于 2009-10-18T09:25:04.187 回答
0

我认为您需要将 config.gem 'grit' 配置到 Rails 应用程序中,以便能够创建 Repo 对象。

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

于 2010-01-25T08:12:04.557 回答