419 Stimmen

Wie kann ich ein lokales Gem in meiner Gemfile Datei festlegen?

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?

626voto

Jimmy Punkte 33423

Ich glaube, du kannst das tun:

gem "foo", path: "/path/to/foo"

259voto

bloudermilk Punkte 17115

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.

38voto

Rimian Punkte 34365

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.

18voto

gotqn Punkte 37722

Um das lokale Gem-Repository in einem Rails-Projekt zu verwenden, befolgen Sie die folgenden Schritte:

  1. Ü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
  2. Repository-Pfad abrufen (der Befehl wird im Gem-Ordner ausgeführt)

    git rev-parse --show-toplevel
  3. 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 Punkt 2 ist

  4. Fügen Sie in Ihrer Anwendung Gemfile folgende Zeile hinzu:

    gem 'GEM_NAME', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'
  5. 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 Punkt 2

  6. Führen Sie abschließend bundle list aus, nicht gem 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-Server stoppe/starte. Um das zu beheben, spezifiziere ich die Gem-Version in der Rails-Anwendung Gemfile auf diese Weise:

    gem 'GEM_NAME', '0.0.2', :github => 'GEM_NAME/GEM_NAME', :branch => 'master'

2voto

Nesha Zoric Punkte 5358

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X