基本的には、特定の依存関係が古くなったときに何らかの形でテストに失敗するような宝石を作ろうとしています。テストフレームワークでは、Gem.loaded_specs( "foo")がgem fooの仕様を返すように、Gemから簡単に切り捨てることができます。私が探しているのは、フィクスチャGemfileを提供し、ロックファイルを解析する方法です。BundlerでGemfile.lockを解析する
私はGem.loaded_specsを使用するとき、それはどういうわけか魔法のようにどのGemfileを使うべきかを知っています。私はそれをどのように別のgemfile(ie:fixture)に送りますか?
私は誰かが「バンドラを使用」に述べた知っていて、それが理にかなっているが、私はこれを行う宝石のための私のコードで:
gem_here = Gem.loaded_specs[gem_name]
gem_here.nil? ? :not_in_bundle : gem_here.version.to_s
私は私の治具Gemfileはなく、現在のプロジェクトで、この作業をする必要があるgemfile 。
これは意味がありますか?これがあいまいなのならお手数です。
注:私はこれをCLI経由で行うつもりはありません。もし私ができるなら、私はプログラム的な(すなわち:ルビーapi)メソッドを使用したいと思います。
編集:
私は今、元のこの種のつもり:
gem_here = Bundler.load.specs.detect do |specs|
specs.name == gem_name
end
gem_here.nil? ? :not_in_bundle : gem_here.version.to_s
ない直接的な答えが、あなたは何を見つけることができますhttps://github.com/appfolio/gemsuranceのソースでの必要性 –
@PhilipHallstromありがとう!それは実際に多くの助けになりました。私はそれに到達すれば私は答えを投稿しますが、これまでのBundler.loadはBundler :: SharedHelpers.default_gemfile – apanzerj
に私を導いています。私はちょうど真似をして正規表現を使用してファイルを解析する必要があります。偉大な解決策ではなく、最も速く/最も直接的に解析する方法です。 :-( – apanzerj