読者です 読者をやめる 読者になる 読者になる

はちゅにっき

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

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

Ruby

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 にはない機能だと思いますが。。。?
実は存在するのかな?