Bundle auf Benutzerebene Gemfile

9

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?

    
Scott Schulthess 05.04.2011, 15:11
quelle

4 Antworten

2

Eine Möglichkeit, dies zu tun, ist das Erstellen verschiedener Funktionen

%Vor%

Dann

Bündel --with-env = scott

    
Scott Schulthess 02.11.2011, 15:58
quelle
2

Wir benutzen diese Technik. Puth dies in deinem Gemfile:

%Vor%

Und dann fügen Sie Ihre persönlichen Edelsteine ​​zu Gemfile.personal hinzu. Schließen Sie Gemfile.personal natürlich von Ihrer Versionskontrolle aus.

    
BuGo 22.07.2011 12:06
quelle
1

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%     
Henry Collingridge 02.06.2011 23:40
quelle
0

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.

Wie Bundler funktioniert

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.

Lösung für Anwendungen

%Vor%

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" :

%Vor%

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.

Lösung für Edelsteine ​​

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 :

%Vor%

und verweisen Sie auf diese Datei anstelle von "my_gem_name" in Ihren Tests, Demo-Anwendung etc ..

    
skalee 07.09.2014 22:33
quelle

Tags und Links