Check version rails and activesupport

railsやrails/activesupport らへんのバージョン見て処理切り分けたいときに知ってればハマらない感じなのでメモ。travis-ci便利。具体例だと https://github.com/Shopify/active_merchant/pull/687 こんなかんじにゴニョゴニョと。

* rails

** 2.3
railties/lib/initializer.rb
railties/lib/rails/version.rb

Rails.version
=> ‘2.3.18’
Rails.version.class
=> String
Rails::VERSION::STRING
=> ‘2.3.18’

** 3.2

Rails.version
=> “3.2.13”
Rails.version.class
=> String
Rails::VERSION::STRING
=> “3.2.13”

** 4.0

Rails.versionがGem::Versionのインスタンスを返しかけたけど、やっぱりStringになった
Add #to_s method to VERSION modules by charliesome · Pull Request #8501 · rails/rails https://github.com/rails/rails/pull/8501

Rails.version
=> “4.0.0.rc1”
Rails.version.class
=> String
Rails::VERSION::STRING
=> “4.0.0.rc1”

* activesupport

**2.3

require ‘active_support’だけではversionをrequireしてない!

ActiveSupport::VERSION
#=> NameError: uninitialized constant ActiveSupport::VERSION
require ‘active_support/version’ #=> []
ActiveSupport::VERSION::STRING #=> ‘2.3.18’

ActiveSupport.version
#=> NoMethodError: undefined method `version’ for ActiveSupport:Module

**3.2

require ‘active_support’だけでversionもrequireする

ActiveSupport::VERSION::STRING
=> “3.2.13”
ActiveSupport.version
=> NoMethodError: undefined method `version’ for ActiveSupport:Module

** 4.0
require ‘active_support’だけでversionもrequireする
ActiveSupport.version がGem::Versionを返す!

ActiveSupport.version
=> Gem::Version.new(“4.0.0.rc1”)
ActiveSupport::VERSION::STRING
=> “4.0.0.rc1”

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中