Lokaler Edelsteinpfad für Entwicklung und Remote-Git Repo für die Produktion

8

Ich habe ein Juwel, an dem ich lokal arbeite, das von einem Projekt verwendet wird.

Wenn ich den Speicherort des Edelsteins mit path in der angeben, kann ich eine Änderung vornehmen und das Projekt nimmt den neuen Code auf:

%Vor%

Wenn ich jedoch nach Heroku schiebe, schlägt die Bündelung fehl, weil Heroku nicht auf die Edelsteinquelle auf meinem lokalen Rechner zugreifen kann.

So kann ich die Edelsteinquelle zu einem entfernten Repo schieben und dort die Edelsteinquelle zeigen:

%Vor%

Allerdings muss ich nun Änderungen an diesem Repo vornehmen und dann den Edelstein aktualisieren, um die neuen Änderungen in meinem Projekt zu erhalten:

%Vor%

Ich kann dies etwas weniger schmerzhaft machen, indem ich eine lokale Überschreibung auf meinen lokalen Repo setze:

%Vor%

Aber ich muss immer noch geänderte Dateien zu git, commit und $ gem update example hinzufügen, wenn ich die Edelsteinquelle ändere, wenn ich neue Änderungen in meinem Projekt haben möchte.

Gibt es eine Möglichkeit, dass mein Projekt lokale Änderungen automatisch übernimmt (wie bei Verwendung von path ), aber das Remote-Repo immer noch in der Produktion verwendet?

    
Undistraction 12.11.2013, 22:46
quelle

3 Antworten

4

Bundler vor v1.2

Via Gemfile,

%Vor%

... oder, verwende einen relativen Pfad zum Edelstein und vergewissere dich, dass Heroku den Edelstein am selben Ort sieht,

%Vor%

... oder, versuche mit --deployment flag in Bundler Ссылка zu spielen, es sollte dein Juwel bündeln Quellen mit der App, die Sie dann in die git Ihrer App Commit so theoretisch Heroku sollte dann die lokale Kopie verwenden und nicht git verwenden, um die Edelstein-Quellen zu holen (ich sagen in der Theorie, weil Heroku hat seine eigenen Macken)

Bundler v1.2 und höher

Ссылка sagt

  

Mit Bundler können Sie auch lokal gegen ein Git-Repository arbeiten   anstatt die Remote-Version zu verwenden. Dies kann durch Einstellen erreicht werden   up eine lokale Überschreibung:

     

bundle config local.GEM_NAME /path/to/local/git/repository

     

Um beispielsweise ein lokales Rack-Repository zu verwenden, könnte ein Entwickler dies tun   Anruf:

     

bundle config local.rack ~/Work/git/rack

     

Jetzt statt auschecken   Im Remote-Git-Repository wird die lokale Überschreibung verwendet. Ähnlich zu   Eine Pfadquelle ändert sich jedes Mal, wenn sich das lokale Git-Repository ändert   wird automatisch von Bundler abgeholt. Dies bedeutet ein Commit in der   local git repo aktualisiert die Revision in Gemfile.lock auf die   lokale git Repo Revision. Dies erfordert die gleiche Aufmerksamkeit wie Git   Submodule. Bevor Sie zur Fernbedienung gehen, müssen Sie sicherstellen, dass es sich um ein lokales handelt   Override wurde gedrückt, sonst könnten Sie nur auf ein Commit verweisen   existiert in Ihrer lokalen Maschine.

     

Bundler führt viele Prüfungen durch, um sicherzustellen, dass ein Entwickler nicht mit invalid arbeitet   Verweise. Insbesondere zwingen wir einen Entwickler, eine Verzweigung anzugeben   die Gemfile, um diese Funktion zu verwenden. Wenn der Zweig in angegeben ist   die Gemfile und der aktuelle Zweig im lokalen Git-Repository nicht   Match wird Bundler abgebrochen. Dies stellt sicher, dass ein Entwickler immer vorhanden ist   Arbeiten gegen die richtigen Zweige und verhindert versehentliches Sperren   zu einem anderen Zweig. Schließlich stellt Bundler auch sicher, dass die   Die aktuelle Revision in Gemfile.lock existiert im lokalen Git   Repository. Dadurch zwingt Bundler Sie, das Neueste zu holen   Änderungen an den Fernbedienungen.

    
bbozo 13.11.2013 15:11
quelle
1

Wie von @ bbozo erwähnt, können Sie bei der Verwendung eines Git-Repositorys in Ihrer gemfile lokale Überschreibungen für die Entwicklung bündeln , die Revisions-Hashes in deinem Gemfile.lock speichern. Bei der Produktion werden diese exakten Revisions-Hashes ausgecheckt, wenn Bundle Install ausgeführt wird.

Gemfile: gem 'example', git: 'https://github.com/your_name/example.git', branch: :master

Kommando shell bündeln: bundle config local.example /path/to/local/git/repository

Gemfile.lock (automatisch generiert): GIT remote: https://github.com/your_name/example.git revision: b9270e61abb89e1ff77fb8cfacb463e4d04388ad branch: master

Beachten Sie, dass Sie nach der Festschreibung im git-Repository "example" die Paketinstallation in Ihrer Hauptanwendung ausführen müssen, damit Gemfile.lock neu erstellt wird, um den neuen Revisions-Hash aufzunehmen. Ich empfehle den folgenden Edelstein zu verwenden, da er diesen Prozess für Sie automatisiert und auch in anderen Szenarien hilft. Sehen Sie die Edelstein Seite für genaue Details:

Ссылка

    
Pierre Pretorius 01.07.2016 16:17
quelle
1

Beste Lösung, die ich im Internet gefunden habe Ссылка

bundle config local.tacokit / pfad / zu / tacokit

Und im Gemfile verwenden Edelstein "Tacokit", Github: "Rossta / Tacokit", Zweig: "Meister"

Dies ist eine funktionierende und getestete Lösung

    
Evgeniy B 30.01.2017 10:24
quelle