Ich möchte, dass Bundler ein lokales Gem lädt. Gibt es dafür eine Option? Oder muss ich den Gem-Ordner in das .bundle-Verzeichnis verschieben?
Antworten
Zu viele Anzeigen?Zusätzlich zur Angabe des Pfades (wie Jimmy erwähnt hat) können Sie auch Bundler zwingen, ein lokales Juwel nur für Ihre Umgebung zu verwenden, indem Sie die folgende Konfigurationsoption verwenden:
$ bundle config local.GEM_NAME /path/to/local/git/repository
Dies ist äußerst hilfreich, wenn Sie zwei Juwelen entwickeln oder ein Juwel und eine Rails-App nebeneinander entwickeln.
Beachten Sie jedoch, dass dies nur funktioniert, wenn Sie bereits git für Ihre Abhängigkeit verwenden, zum Beispiel:
# Im Gemfile
gem 'rack', :github => 'rack/rack', :branch => 'master'
# In Ihrer Terminal
$ bundle config local.rack ~/Work/git/rack
Wie auf den Dokumenten zu sehen.
Sie können auch auf ein lokales Juwel mit Git verweisen, wenn Sie gerade daran arbeiten.
gem 'foo',
:git => '/Pfad/zum/lokalen/git/repo',
:branch => 'mein-feature-branch'
Dann, wenn es sich ändert, führe ich aus
bundle exec gem uninstall foo
bundle update foo
Aber ich bin mir nicht sicher, ob jeder diese beiden Schritte ausführen muss.
Um das lokale Gem-Repository in einem Rails-Projekt zu verwenden, befolgen Sie die folgenden Schritte:
-
Überprüfen Sie, ob Ihr Gem-Ordner ein Git-Repository ist (der Befehl wird im Gem-Ordner ausgeführt)
git rev-parse --is-inside-work-tree
-
Repository-Pfad abrufen (der Befehl wird im Gem-Ordner ausgeführt)
git rev-parse --show-toplevel
-
Einrichten einer lokalen Überschreibung für die Rails-Anwendung
bundle config local.GEM_NAME /Pfad/zum/lokalen/git-Repository
wo
GEM_NAME
der Name Ihres Gems ist und/Pfad/zum/lokalen/git-Repository
die Ausgabe des Befehls im Punkt2
ist -
Fügen Sie in Ihrer Anwendung
Gemfile
folgende Zeile hinzu:gem 'GEM_NAME', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
-
Das Ausführen von
bundle install
sollte etwas Ähnliches ergeben:Using GEM_NAME (0.0.1) von git://github.com/GEM_NAME/GEM_NAME.git (bei /Pfad/zum/lokalen/git-Repository)
wo
GEM_NAME
der Name Ihres Gems ist und/Pfad/zum/lokalen/git-Repository
aus Punkt2
-
Führen Sie abschließend
bundle list
aus, nichtgem list
, und Sie sollten etwas Ähnliches sehen:GEM_NAME (0.0.1 5a68b88)
wo
GEM_NAME
der Name Ihres Gems ist
Einige wichtige Fälle, die ich beobachte:
Rails 4.0.2
ruby 2.0.0p247 (2013-06-27 Revision 41674) [x86_64-linux]
Ubuntu 13.10
RubyMine 6.0.3
- Es scheint, dass
RubyMine
lokale Gems nicht als externe Bibliothek anzeigt. Weitere Informationen zu dem Fehler finden Sie hier und hier - Wenn ich etwas im lokalen Gem ändere, muss ich den Rails-Server
stoppen/starten
, damit die Änderungen in der Rails-Anwendung geladen werden. -
Wenn ich die
Version
des Gems ändere, erhalte ich einen Fehler, wenn ich den Rails-Serverstoppe/starte
. Um das zu beheben, spezifiziere ich die Gem-Version in der Rails-AnwendungGemfile
auf diese Weise:gem 'GEM_NAME', '0.0.2', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
Sie können Edelsteine mit der Quelle referenzieren:
Quelle: 'https://quelle.com', Git-Repository (:github => 'git/url')
und mit lokalem Pfad
:path => '.../pfad/edelstein_name'
.
Sie können mehr über [Gemfiles und wie man sie verwendet] erfahren (https://kolosek.com/rails-bundle-install-and-gemfile) in diesem Artikel.
- See previous answers
- Weitere Antworten anzeigen