7


3

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

  • 最後のリビジョンのためのGitハッシュ

  • 最後のリビジョンのタイムスタンプ

5 Answer


6


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

タイムスタンプに関しては、そこでコードをホストしている場合は、ハッシュでhttp://develop.github.com/p/commits.html [github api]を押すことができます。 ruby-github gemがこれを手助けしてくれるか、あるいはhttp://rubygems.org/gems/httparty [HTTParty]を使って自分でやることができるように見えます。


2


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


1


Herokuには gritがインストールされています。 それで、あなたはそれを使ってリポジトリを開くことができます。

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


1


もう1つの方法は、ローカルリポジトリから必要なバージョン情報を取得し、Heroku側の環境変数を更新するレーキタスクを使用してデプロイすることです。 そうすれば、Heroku側の振る舞いに頼ることなく、タグ、コミットハッシュ、その他のものを使用できます。

たとえば、レーキタスクで最新のタグを使用する場合は、次のようにします。

def app_version%x [git describe --tags --abbrev = 0] .strip end

それからあなたの仕事の本体の中で:

「git push blah:blah blah」を実行し、「heroku config:add APP_VERSION =#{app_version}」を実行します。

間接的に忍び込むのではなく、Herokuのgitから直接その情報を取得できるようにしたいのですが、その方法を理解することはできませんでした。


0


Repoオブジェクトを作成するには、config.gemをRailsアプリに 'grit’する必要があると思います。

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