Gibt es einen Befehl entweder in debugger
oder ruby-debug
, um eine Liste aller Edelsteine und/oder Plugins zu erhalten, die für einen Rails-Prozess in den Speicher geladen wurden? Ich verstehe, dass nur die 'require
'-Edelsteine geladen sind, aber ich möchte schnell sehen, was während der Laufzeit geladen wurde.Gibt es eine Möglichkeit zu sagen, welche Edelsteine und Plugins zur Laufzeit für einen Rails-Prozess geladen werden?
Antwort
Dies sollte man alles durch rubygems geladen werden:
Gem.loaded_specs.keys
Ich weiß nicht, von einer universellen Art und Weise zu sehen, welche Schienen Plugins geladen werden, können Sie an der Quelle für Rails :: Initializer (pre aussehen 3.0) & herauszufinden, was Ihre Version von Schienen tut. Hoffentlich wissen Sie, welche Plugins sollte geladen werden & kann dies von der Konsole beim Debuggen bestätigen.
Mit Versionen:
Gem.loaded_specs.values.map {|x| "#{x.name} #{x.version}"}
Ich denke, die oben genannten Antworten mit Gem.loaded_specs.keys
die Edelsteine auf dem „Lastpfad“ zeigen.
Allerdings haben Sie ursprünglich nach Edelsteinen gefragt, die in den Speicher geladen wurden, und this Antwort kann hilfreicher sein.
Nein, die anderen Antworten listen nur die erforderlichen Edelsteine korrekt auf. Ich habe das mit Ruby 2.3 getestet. Aber +1 für Ihre Antwort, weil '$ LOADED_FEATURES' auch ziemlich nützlich ist. – akostadinov
Ich denke @sreid hat einen wichtigen Punkt in seiner Antwort unten, wenn ich verstehe, was richtig läuft. Die Anzahl der Edelsteine auf dem Ladepfad ist nicht notwendigerweise gleich der Anzahl der in den Speicher geladenen Edelsteine. Wenn zum Beispiel bestimmte Gruppen in einem 'Bundler.require' ausgeschlossen werden, werden' Gem.loaded_specs' dann immer noch angezeigt? –