8

RailsアプリケーションがHerokuにデプロイされているとしましょう。これらの情報をビューに表示するにはどうすればよいですか?

  • 最後のリビジョンのGitハッシュ
  • 最後のリビジョンのタイムスタンプ
4

5 に答える 5

5

Herokuは、コミットハッシュを使用して環境変数を設定しますENV['COMMIT_HASH']

タイムスタンプに関しては、コードをそこでホストする場合、ハッシュでgithubapiをヒットする可能性があります。ruby-github gemがこれに役立つように見えます。または、 HTTPartyを使用して自分で行うこともできます。

于 2010-12-24T00:46:11.500 に答える
2

これは、アプリがdynoグリッドにデプロイされてリクエストを処理するときに、高速デプロイのために「スラッグ」にコンパイルされ、このスラッグにはgitリポジトリがないためです。

于 2010-09-09T00:20:30.830 に答える
2

これを行う別の方法は、ローカルリポジトリから必要なバージョン情報を取得し、Heroku側の環境変数を更新するrakeタスクを使用してデプロイすることです。そうすれば、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から直接取得できるようにしたいと思いますが、その方法を理解することはできませんでした。

于 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

Repoオブジェクトを作成できるようにするには、Railsアプリにconfig.gem'grit'を組み込む必要があると思います。

ここでグリットについて読むことができますhttp://github.com/mojombo/grit/

于 2010-01-25T08:12:04.557 に答える