Bestimmen Sie die Ruby-Version in Rails

81

Gibt es eine Möglichkeit zu bestimmen, welche Ruby-Version in Rails ausgeführt wird (entweder im Web oder über script/console)? Ich habe Ruby 1.8.6 installiert, aber ich habe auch Ruby Enterprise Edition 1.8.7-20090928 installiert und möchte sicherstellen, dass die richtige Installation verwendet wird.

Daniel Vandersluis
quelle

Antworten:

161

Verwenden Sie die Konstante der obersten Ebene

RUBY_VERSION

andere nützliche Konstanten der obersten Ebene sind

RUBY_PATCHLEVEL
RUBY_PLATFORM
RUBY_RELEASE_DATE

hier ist eine irb sitzung:

irb(main):001:0> RUBY_VERSION
=> "1.8.7"
avguchenko
quelle
12

Versuchen Sie die Konstante RUBY_VERSION. Ich benutze dies ausgiebig, um festzustellen, ob ich unter 1.8 oder JRuby laufe.

Wenn Sie sich nicht im Produktionsmodus befinden, können Sie eine schnelle Überprüfung durchführen, indem Sie auf die URL "/ Rails / Info / Eigenschaften" klicken.

Mark Westling
quelle
10

Neben der Konstante RUBY_VERSION und Freunden können Sie auch Config :: CONFIG ausprobieren. Dieser Hash enthält nicht nur die Versionsnummern, sondern auch eine Menge anderer nützlicher Laufzeitinformationen, wie den Pfad zur Binärdatei, den Hostnamen, ...

Averell
quelle
danke, ich benutze 'setzt RbConfig.ruby' für Ruby 2.0 und Rails 4.0 und es gibt '/usr/local/rvm/rubies/ruby-2.0.0-p247/bin/ruby' zurück
quatermain
9

Verwenden Sie RUBY_VERSIONwie von anderen erwähnt.

Sie können dann einen Gem::VersionVersionszeichenfolgenvergleich durchführen:

require 'rubygems' # Only needed for ruby pre-1.9.0 but it's safe for later versions (evaluates to false).
if Gem::Version.new(RUBY_VERSION) < Gem::Version.new('1.9.0')
    extend DL::Importable                                    
else                                                         
    extend DL::Importer                                      
end                                                          
KomodoDave
quelle
Ich wünschte, diese Antwort wäre da - stackoverflow.com/q/11819525/322020 - aber ich kann sie nicht verschieben, also bitte ich Sie, diese zu löschen und dort zu posten.
Nakilon