Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在视图中显示Git修订哈希和时间戳?_Ruby On Rails_Heroku - Fatal编程技术网

Ruby on rails 在视图中显示Git修订哈希和时间戳?

Ruby on rails 在视图中显示Git修订哈希和时间戳?,ruby-on-rails,heroku,Ruby On Rails,Heroku,假设我在上部署了一个Rails应用程序。如何在视图中显示这些信息 上次修订的Git哈希 上次修订的时间戳 Heroku上安装了一个。因此,您可以使用它打开存储库 repo = Repo.new(Rails.root + '.git') last_commit = repo.commits.first p last_commit.id p last_commit.authored_date 我认为您需要在Rails应用程序中配置.gem“grit”,以便能够创建Repo对象 你可以在这里阅读有

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

  • 上次修订的Git哈希
  • 上次修订的时间戳
Heroku上安装了一个。因此,您可以使用它打开存储库

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

我认为您需要在Rails应用程序中配置.gem“grit”,以便能够创建Repo对象


你可以在这里阅读有关grit的内容,这是因为当你的应用程序部署到dyno网格上服务请求时,它会被编译成一个“slug”,用于快速部署,而这个slug不再带有git repo。

Heroku使用commit hash
ENV['commit\u hash']
设置一个环境变量


至于时间戳,如果您在那里托管代码,您可以使用散列来点击。看起来可以帮助您完成这项任务,或者您可以自己完成。

另一种方法是使用rake任务进行部署,该任务从本地repo获取所需的版本信息,并更新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上获得这些信息,而不是间接地偷偷地把它们带进来,但我从来没有想过如何做到这一点

谢谢你的提示。不幸的是,它在heroku控制台中对我不起作用(在应用程序本身中会有所不同吗?)。在Repo.new之后,我得到了“Grit::NoSuchPathError:”有什么想法吗?试图解决类似的问题,我可以确认这不符合描述。这不起作用,因为.git目录在Heroku上不可用,至少在当前的Cedar堆栈中不可用。这似乎是对答案的第一条评论(Rich Apodac)的回应(达米恩·马修著)。