2013-07-02 20 views
7

Rails sürümüne dayalı bir gemide koşullu akışı yönetmenin doğru yolu nedir?Gem yazma için Raylar sürümünün doğru yolu

Raylar 4 bazı şeyleri değiştirir, bu nedenle Rails ana sürümüne göre 4'e karşı 3 veya daha önceki bir süreye göre koşullu olarak akışa ihtiyacım var.

ben geldim yakın

geçerli:

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

Rails sürümünüzü Gemfile'ınızda belirtmiyor musunuz? – Nobita

+0

Bir mücevher geliştiriyorum ve 2.x'ten 4.x'e Rails'i desteklemesi gerekiyor. Maalesef, Rails 4 temel ActiveSupport bileşenlerinden birini değiştirdi (aslında kendi başına bir gemiye dahil edildi), bu yüzden Rails 4 için geminin davranışını değiştirmem gerekiyor (hala 2.x - 3.x sürümleri için iyi çalışıyor)). –

+0

Bunu yapabileceğinizden emin değilim .. Benim düşüncem, bir kez geminiz inşa edildiğinde, Rubygems bu kodu çalıştıracak ve onun statik bir temsilini oluşturacaktır ... – Nobita

cevap

15

Raylar çeşitli yama seviyeleri için Rails::VERSION altında sabitleri tanımlar: MAJOR, MINOR, TINY ve PRE (eğer varsa). sürümü dizesi constructed from these integers olduğunu ve bunları doğrudan kullanabilirsiniz:

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

Bunlar geri to at least Rails 2.0.x gitmek böylece GEM en müsaade bağımlılık spec için kullanmak güvenli olmalıdır.

0

Şahsen ben Rails.version =~ /^4/ çok daha iyi okur düşünüyorum.

+0

'Rails.version.to_i> = 4' de bir alternatiftir. – tadman

İlgili konular