バージョンによるAPIの違いを吸収するような時に。
gem_version_more?(name, version)
require 'rubygems'
# gem_version_more?('rroonga', '2.1.0') #=> rroongaが2.1.0以上ならtrue
def gem_version_more?(name, version)
Gem.loaded_specs[name].version >= Gem::Version.new(version)
end
-
Gem.loaded_specs
から指定した名前のgemのバージョンを取得 -
Gem::Version
を使って文字列からバージョン情報の作成
使用例
rroonga2.1.0
からGroonga::Table#sort
の返り値がArray
からGroonga::Array
に変更となったため、以下の関数で違いを吸収しました。
milkode/lib/milkode/common/util.rb
# 互換性保持のため
def groonga_table_sort(table, keys, options = {})
if gem_version_more?('rroonga', '2.1.0')
table.sort(keys, options).map{|r| r.value}
else
table.sort(keys, options)
end
end