App to Pick up application release from Git/Capistrano?

My application is going into user testing and I would like to see
which “release” the user has been testing against by the release
appearing somewhere on the view. I can then check it on screen prints
etc.

I am using Git and Capistrano in a multi-stage environment.

I expect I could access the capistrano release name from the
filesystem directory somehow. Any clever way of doing this in the
application controller?

Even better would be to somehow get Capistrano to capture the SHA
(e.g. 1837213156f56b850e9045622d5c2f4a1607ef53) that it is checking
out and placing that somewhere where I can read. That way I can track
any errors based on the Git release. Perhaps just displaying the
first 4 digits would be enough. Has anyone done this somehow?

Any other ideas?

O.

On 22 Apr 2010, at 18:00, Owain wrote:

Even better would be to somehow get Capistrano to capture the SHA
(e.g. 1837213156f56b850e9045622d5c2f4a1607ef53) that it is checking
out and placing that somewhere where I can read. That way I can track
any errors based on the Git release. Perhaps just displaying the
first 4 digits would be enough. Has anyone done this somehow?

p = cd #{RAILS_ROOT} && git rev-parse HEAD.strip
=> “031154343573f846dc4f9d31806e58438bfe783e”

q = cd #{RAILS_ROOT} && git show-ref.strip
=> “031154343573f846dc4f9d31806e58438bfe783e refs/heads/master”

Would be best if you store the result in a constant at startup, so the
IO operation isn’t called on every page.

Hope this helps.

Best regards

Peter De Berdt

On Apr 22, 2010, at 1:02 PM, Peter De Berdt wrote:

filesystem directory somehow. Any clever way of doing this in the
=> “031154343573f846dc4f9d31806e58438bfe783e”
Peter De Berdt
You can always use the contents of the REVISION file that cap puts in
your Rails.root directory

File.read(File.expand_path(‘REVISION’, RAILS_ROOT))

-Rob

Rob B. http://agileconsultingllc.com
[email protected]
+1 513-295-4739
Skype: rob.biedenharn

On 22 Apr 2010, at 20:02, Rob B. wrote:

Best regards

Peter De Berdt

You can always use the contents of the REVISION file that cap puts
in your Rails.root directory

File.read(File.expand_path(‘REVISION’, RAILS_ROOT))

Ah indeed, totally forgot about that one.

Best regards

Peter De Berdt

Thanks Peter and Rob.

I think it would still make sense to do this during initialization
rather than at the application controller since it is during
initialization is then it will change. I will also add some logic to
the view just to check REVISION is there, perhaps in future the app
might not be deployed using Cap. Sounds like a little helper.

O.

so here it is my solution;

/app/config/initializers/revision.rb
filename = File.expand_path(‘REVISION’, RAILS_ROOT)
REVISION = File.exist?(filename) ? File.read(filename) : cd #{RAILS_ROOT} && git rev-parse HEAD.strip

/app/views/layout/application.html.erb
<%- unless production? %>

<%= "#{REVISION[0..3]} #{Time.now.to_s(:db)} "%> <%- end -%>

/app/helpers/application_helper.rb
def production?
@is_production ||=(ENV[‘RAILS_ENV’]==‘production’)
end

/public/stylesheets/content.css
#revision {
color: gray;
position: absolute;
z-index: 9;
top: 10px;
left: 0px;
}