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.

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?

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

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 Biedenharn http://agileconsultingllc.com

Rob@AgileConsultingLLC.com

+1 513-295-4739

Skype: rob.biedenharn

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? %>   <p id='revision'><%= "#{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;   }