はちゅにっき

こっちのブログはまったり更新

require されているモジュールのバージョンを知りたい!調べたい!

Perl の場合 Google さんで検索すれば1件目にはHITするのに、Ruby はまったく HIT せず。
とんちんかんな検索結果ばっかりで困った。。。
う〜ん?
なんだかんだで、Perl コミュニティの大きさって偉大だなぁ。
ゴミ記事ばっかり量産しているこんな blog でゴメンナサイ。

結果としては、Ruby のモジュールはたいていが RubyGems を経由してインストールされるため、rubygems にバージョンを調べる機能がついているみたい。
って、rubygems ではバージョン指定してモジュールを require できるんだから、バージョン調べられて当然か。
そもそもそれを言い出したら

$ gem list

で見て、どうせ標準で require されるのは最新版でしょ?
とか考えてればいいのかな?
でも個別に $GEM_HOME とか設定してたら、どこが優先されるの?
それとも、それでもやっぱり最新版が require されるの?
うーん、今度調べてみよう。。。


それはいいとして、早速 irb を使って rubygems 経由でバージョンの確認をしてみました。

require 'rubygems'
require 'sequel'
puts Gem.loaded_specs['sequel'].version   # => 2.8.0

というわけで、2.8.0 が require されていることが分かりました。
ついでに、バージョンを指定した場合。

require 'rubygems'
gem 'sequel', '= 1.5.0'
require 'sequel'
puts Gem.loaded_specs['sequel'].version   #=> 1.5.0

きちんと 1.5.0 が require されていました。
って、これで違うバージョンが require されていたら問題ですが。


複数のバージョンを混在させておいても、キチンと細かくバージョンを指定して require できるというのは、RubyGems のすばらしいところでもありますね。
ここまで細かくバージョンを指定して require するのは Perl にはない機能だと思いますが。。。?
実は存在するのかな?