siegi
(siegi)
April 23, 2007, 7:27am
1
hi,
who has an example of how to retrieve svn-version information from
inside a rails application.
i'd like to display this information to the user, so that he can
report a bug relating to the version number.
retrieving should be quick as it is displayed on every view.
many thanks in advance,
siegi
eden_li
(eden li)
April 23, 2007, 12:10pm
2
You could parse the results of `svn info` then store it in a cached
class variable in your ApplicationHelper. In production mode, `svn
info` would only be called once.
def svn_revision
(@@svn_revision rescue false) or
@@svn_revision = `svn info`.scan(/Revision: (\d+)/)[0][0]
end
Hacky, but...
rab
(Rob Biedenharn)
April 23, 2007, 1:14pm
3
If you're deploying with capistrano and have a revisions.log, you can use something like this:
Layout:
<div id='footer'>
<div id='revision'><%= application_revision %></div>
<div id='time'><%= Time.now %></div>
</div>
Helper:
def application_revision
" ver. #{RevisionNumber.from_log}" rescue ''
end
From lib/revision_number.rb: Note that this uses the file-tail gem to simplify getting the last line of the log file:
# revision_number.rb
You might use a metadata file, accessible to the app, which includes
the svn revision, and then have that revision managed by svn's
'Revision' keyword substitution:
http://svnbook.red-bean.com/nightly/en/
svn.advanced.props.special.keywords.html
-faisal
Hope you still need this, I'm a few days behind on reading the forums.
Here's what I use, assuming you have svnversion in your path:
class ApplicationController < ActionController::Base
def svn_revision
@svn_revision ||= `svnversion .`.gsub(/^.*\:/, '').gsub(/[MS]/, '').to_i
end
helper_method :svn_revision
end
That caches the revision number for the life of the Ruby process, so it should be fast.
Brad
If you're deploying with capistrano and have a revisions.log, you can
revisions.log is phased out in Capistrano 2.x
see:
http://www.capify.org/upgrade
Alain