2013-07-02 14 views
7

Jaki jest prawidłowy sposób zarządzania przepływem warunkowym w klejnocie na podstawie wersji Rails?Prawidłowy sposób testowania wersji Rails dla tworzenia klejnotów

Szyny 4 zmieniają niektóre rzeczy, więc muszę warunkowo przepływać w oparciu o główną wersję Railsów 4 lub 3 lub wcześniejszą.

Najbliżej Doszedłem jest:

if Rails.version.split(".").first.to_i < 4 
    # Do the Rails 4 thing 
else 
    # Do it the old way 
end 
+0

Nie określasz swojej wersji Railsowej w swoim Gemfile? – Nobita

+0

Tworzę klejnot i muszę obsługiwać Railsy od wersji 2.x do 4.x. Niestety, Rails 4 zmienił jeden z podstawowych składników ActiveSupport (w rzeczywistości jest to prawdziwy klejnot), więc muszę zmienić zachowanie klejnotu dla Rails 4 (nadal działa dobrze dla wersji 2.x - 3.x). –

+0

Nie jestem pewien, czy będziesz w stanie to zrobić .. Myślę, że kiedy twój klejnot zostanie zbudowany, Rubygems uruchomi ten kod i utworzy statyczną reprezentację tego ... – Nobita

Odpowiedz

15

szyn definiuje stałe pod Rails::VERSION dla różnych poziomów patch: MAJOR, MINOR, TINY i PRE (jeśli dotyczy). Ciąg wersja jest constructed from these integers i można z nich korzystać bezpośrednio:

if Rails::VERSION::MAJOR >= 4 
    # Do the new thing 
else 
    # Do it the old way 
end 

nich wrócić to at least Rails 2.0.x więc powinny być bezpieczne w użyciu dla Twojego gem dozwolonym zależności spec.

0

Osobiście uważam Rails.version =~ /^4/ brzmi o wiele lepiej.

+0

'Rails.version.to_i> = 4' jest również alternatywą. – tadman

Powiązane problemy