Rubyで実行中にGemの最新バージョンのパスを取得する方法
Ruby/SDL(Ruby 1.9用mswin32版)をgemでインストールするとき、dllをコピーするために、gemのインストール先パスを取得する方法を検討したので、その結果をメモで載せておきます。
# gemファイルを検索してくれる頼もしい存在 ps = Gem::GemPathSearcher.new # init_gemspecs:インストールしているGem::Specificationインスタンスを検索 spec = ps.init_gemspecs. # 指定のgem名の一覧を取得(バージョン番号違いのものがあるため) select{|sp| sp.name.match(/取り出したいGem名(例:rubysdl\-mswin32)/)}. # 最新のバージョンを取得 max_by{|sp| sp.version.to_s} # installation_path: gemがインストールされているパス(lib/ruby/gems/1.9.1/) full_path = spec.installation_path + "/gems/" + spec.full_name