Im Grunde versuche ich ein Juwel zu bauen, das irgendeine Art von Testfehlern durchführt, wenn bestimmte Abhängigkeiten veraltet sind. Im Testframework kann ich den Mist einfach aus Gem stopfen, so dass Gem.loaded_specs ("foo") die Spezifikation für das Gem foo zurückgibt. Nach was ich suche, ist eine Möglichkeit, eine Fix-Gemfile bereitzustellen und dann die Sperrdatei zu analysieren.Parsing eines Gemfile.lock mit Bundler
Wenn ich Gem.loaded_specs verwende, weiß es auf magische Weise, welches Gemfile verwendet werden soll, wie füttere ich es mit einer anderen gemfile (zB: mein Fixture)?
Ich weiß, dass jemand erwähnt „verwenden Bündler“ und das macht Sinn, aber in meinem Code für das Juwel Ich tue dies:
gem_here = Gem.loaded_specs[gem_name]
gem_here.nil? ? :not_in_bundle : gem_here.version.to_s
Ich brauche diese Arbeit mit meiner Befestigung Gemfile zu machen und nicht die aktuellen Projekte gemfile .
Macht das Sinn? Entschuldigung, wenn das vage ist.
Hinweis: Ich versuche dies nicht über die CLI. Ich würde gerne programmatische (dh: ruby api) Methoden verwenden, wenn ich kann.
Edit:
ich mit dieser Art von Quelle werde jetzt:
gem_here = Bundler.load.specs.detect do |specs|
specs.name == gem_name
end
gem_here.nil? ? :not_in_bundle : gem_here.version.to_s
keine direkte Antwort, aber Sie finden können, was Sie brauchen in der Quelle von https://github.com/appfolio/gemsurance –
@PhilipHallstrom danke! Das hat mir sehr geholfen. Ich werde die Antwort posten, wenn ich dazu komme aber bisher hat Bundler.load mich zu Bundler :: SharedHelpers.default_gemfile – apanzerj
immer noch hingefahren. Ich muss vielleicht einfach die Datei mit Hilfe von Regexen analysieren und parsen. Keine großartige Lösung, aber der schnellste/direkteste Weg zum Parsen. :-( – apanzerj