Ich hätte gerne ein Gemfile in Bundler, das meine eigenen persönlichen Dateien so einstellt, dass sie immer in Bündeln zusammengefasst werden ...
aka ruby-debug, interaktiver Editor und so weiter.
Irgendeine Idee, wie man das macht?
Eine Möglichkeit, dies zu tun, ist das Erstellen verschiedener Funktionen
%Vor%Dann
Bündel --with-env = scott
Ich bin mir nicht 100% sicher, was Sie erreichen wollen, aber;
Wenn Sie nur eine Anzahl von Entwicklungs-Edelsteinen angeben möchten, können Sie eine Entwicklungsgruppe angeben, die von den Bereitstellungen ausgeschlossen werden kann:
%Vor%Dann auf Produktion oder Test würden Sie tun:
%Vor% Mein Vorschlag hängt nicht von Bundler ab. Als solches stört Gemfile*
nicht mit Ihren privaten Edelsteinen, denn der Preis ist etwas weniger bequem als die Antwort von @ScottSchulthess.
Es ist ein Array in der globalen Variable $LOAD_PATH
gespeichert, das ein "Ladepfad für Skripte und binäre Module durch Laden oder Anfordern" ist (siehe Ruby-Dokumente ) und Bundler ändert dieses Array.
Wenn du ein Juwel entwickelst, enthält $LOAD_PATH
Pfade zu allen Edelsteinen im System. Sie können z.B. require "pry"
somewhere und pry gem wird korrekt geladen, auch wenn es nicht in gemspec oder Gemfile erwähnt wird. Sie müssen es nicht zu Abhängigkeiten hinzufügen. (Natürlich muss es bereits mit gem install pry
installiert sein.)
Eine sehr unterschiedliche Strategie, die Bundler bei der Entwicklung einer Anwendung anwendet. In diesem Fall werden die meisten von $LOAD_PATH
auf require bundler/setup
entfernt (Rails ruft sie in config/boot.rb
auf). Nur essentielle Pfade und solche, die auf Edelsteine verweisen, die in Gemfile.lock
angegeben sind, bleiben dort. Wenn Sie also pry
verwenden möchten, ohne es zu Gemfile hinzuzufügen, müssen Sie es an $LOAD_PATH
anhängen, bevor Sie es benötigen.
Wenn Sie Rails verwenden, speichern Sie es in /config/initializers/00_custom_gems.rb
und das ist alles. Outside Rails müssen zusätzlich benötigt werden, vorzugsweise direkt nach require "bundler/setup"
:
Denken Sie daran, diese Datei in .gitignore
zu erwähnen.
Manchmal endet der richtige Pfad nicht mit /lib
, sondern mit dem Namen der Architektur. Der einfachste Weg, es zu lernen, besteht darin, es für einen Moment zu Gemfile hinzuzufügen und puts $LOAD_PATH
im oben erwähnten Initialisierer zu machen. Sie können diese Verzeichnisse auch von Gemspec lernen.
Beim Entwickeln eines Edelsteins musst du $LOAD_PATH
nicht verbessern, nur um Edelsteine zu erhalten, die du willst. Wenn Sie in Tests benutzerdefinierte Edelsteine benötigen und RSpec verwenden, kann dies in /spec/support
geschehen.
Eine andere (weniger vernünftige) Idee ist das Hinzufügen einer Datei lib/development.rb
:
und verweisen Sie auf diese Datei anstelle von "my_gem_name" in Ihren Tests, Demo-Anwendung etc ..
Tags und Links bundler