RubyとRailsで特定のバージョン下でのみ適用したいパッチを書く方法
はじめに
RubyとRailsで、特定のバージョン下において適用したいパッチを書く方法を調べたのでまとめました。
実装例
以下の通りです。
if Gem::Version.new(RUBY_VERSION) >= Gem::Version.new('2.0.0') # Ruby 2系で適用したいパッチ end if Gem::Version.new(Rails.version) < Gem::Version.new(4) # Rails 3系以下で適用したいパッチ end
解説
バージョン番号の取得
実行時のRuby、Railsのバージョンは以下のようにして取得できます。
RUBY_VERSION #=> "2.2.1" Rails.version #=> "4.2.1"
バージョン番号の比較
Rubyでは、バージョンの各番号は1桁なので、単純に文字列の比較を行うだけでいいんですが、Railsではそうもいきません。
そこで、Gem::Version
クラスを利用して比較を行います。
'4.1.2' < '4.1.10' # => false Gem::Version.new('4.1.2') < Gem::Version.new('4.1.10') # => true
おわりに
そもそもパッチを書かないといけない状況があんまよくないので、何とかしましょうという話ではある。