2009-10-17 15 views

risposta

6

Heroku imposta una variabile di ambiente con l'hash di commit ENV['COMMIT_HASH'].

Per quanto riguarda il timestamp, è possibile premere il numero github api con l'hash se si ospita il codice lì. Sembra che lo ruby-github gem possa aiutarti con questo, oppure potresti farlo da solo con HTTParty.

+7

'ENV ['COMMIT_HASH']' funziona su Bamboo, ma non su Cedar. –

1

C'è grit installato su Heroku. Quindi puoi aprire il repository lì che lo usa.

+1

Grazie per il suggerimento. Sfortunatamente, non funziona per me nella console di heroku (sarebbe diverso nell'app stessa?). Dopo Repo.new, ottengo 'Grit :: NoSuchPathError:' Qualche idea? –

+0

Cercando di risolvere un problema simile, posso confermare che questo non funziona come descritto. – Andrew

+1

Questo non funziona, dato che la directory .git non è disponibile su Heroku, almeno non nello stack attuale di Cedar. –

2

La ragione di questo è perché quando la vostra applicazione viene distribuita sulla griglia banco prova per servire le richieste, è compilato in un "lumaca" per la distribuzione rapida, e questo slug doesn' Ho più il repository git con esso.

+0

Questa sembra essere una risposta al primo commento (di Rich Apodaca) alla risposta http://stackoverflow.com/a/1584452/1034080 (di Damien MATHIEU). –

1

Un altro modo per farlo è distribuire con un'attività rake che ottiene le informazioni sulla versione desiderate dal repository locale e aggiorna una variabile di ambiente sul lato Heroku. Quindi puoi usare un tag, un hash del commit o qualsiasi altra cosa, senza dover fare affidamento su comportamenti da parte di Heroku.

Ad esempio, se si voleva utilizzare l'ultima tag, nel vostro compito rake:

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

Poi nel corpo del vostro compito:

run "git push blah:blah blah" 
run "heroku config:add APP_VERSION=#{app_version}" 

mi piacerebbe essere in grado di ottenere informazioni direttamente da Git su Heroku, piuttosto che introdurlo in modo indiretto, ma non sono mai stato in grado di capire come farlo.