トップ «前の日記(2012/09/01 (土) ) 最新 次の日記(2012/09/03 (月) )» 編集 RSS feed

HsbtDiary


2012/09/02 (日) [長年日記]

[ruby][bundler] Bundler を使って Gemfile をパースする

とある Rails アプリケーションで自分自身が使っている Gemfile 以外の Gemfile の情報を取得したい時にどうすればいいんだろうと Bundler のソースコードを読んでいたら、割と簡単に実現できることがわかった。

require 'bundler'
Bundler::Definition.build('Gemfile', nil, nil).dependencies

上記のコードで Bundler::Dependency なインスタンスが Gemfile に記載されている gem の数だけ得られるので、後は map(&:name) とかすれば gem の名前だけ手に入る。

後は Bundler 使って Gemfile を読み込んだ後に、手を加えてから、再度 Gemfile を生成というところまでやりたいのだけど、それは無理かなあ。もう少しコードリーディング。