it-swarm.com.de

Wie kann ich lokale .gem-Dateien in meiner Gemfile angeben?

Ich habe ein paar Gem-Dateien, die ich über gem install xx.gem installiere. Kann ich Bundler mitteilen, dass er sie verwenden soll? Oder muss ich den Quellpfad angeben?

139
ddayan

Standardmäßig überprüft Bundler zuerst Ihr System und wenn es keinen Edelstein findet, verwendet es die in Ihrem Gemfile angegebenen Quellen.

27
JHurrah

Dies ist keine strikte Antwort auf Ihre Frage zur Installation von .gem-Paketen. Sie können jedoch alle Arten von Speicherorten auf Gem-by-Gem-Basis angeben, indem Sie Ihre Gemfile bearbeiten.

Wenn Sie ein :path-Attribut angeben, wird der Edelstein von diesem Pfad auf Ihrem lokalen Computer installiert.

gem "foreman", path: "/Users/pje/my_foreman_fork"

Wenn Sie ein :git-Attribut angeben, wird der Edelstein alternativ aus einem Remote-Git-Repository installiert.

gem "foreman", git: "git://github.com/pje/foreman.git"

# ...or at a specific SHA-1 ref
gem "foreman", git: "git://github.com/pje/foreman.git", ref: "bf648a070c"

# ...or branch
gem "foreman", git: "git://github.com/pje/foreman.git", branch: "jruby"

# ...or tag
gem "foreman", git: "git://github.com/pje/foreman.git", tag: "v0.45.0"

(Wie @JHurrah erwähnt in sein Kommentar .)

255
pje

Der Bundler scheint keine .gem-Dateien zu verwenden. Das Verweisen des Pfads auf ein Verzeichnis, das .gem-Dateien enthält, funktioniert nicht. Einige Leute schlugen vor, zu diesem Zweck einen lokalen Gem-Server (geminabox, stickler) einzurichten.

Was ich jedoch viel einfacher fand, ist die Verwendung eines lokalen Gem "Servers" aus dem Dateisystem: Legen Sie Ihre .gem-Dateien in ein lokales Verzeichnis und verwenden Sie "gem generate_index", um daraus ein Gem-Repository zu machen

mkdir repo
mkdir repo/gems
cp *.gem repo/gems
cd repo
gem generate_index

Verweisen Sie schließlich auf diesen Speicherort, indem Sie Ihrem Gemfile die folgende Zeile hinzufügen

source "file://path/to/repo"

Wenn Sie die Gems im Repository aktualisieren, stellen Sie sicher, dass der Index neu erstellt wird.

54
Martin Thiede

Ich würde Ihren Edelstein im Ordner des Anwendungsherstellers auspacken

gem unpack your.gem --target /path_to_app/vendor/gems/

Fügen Sie dann den Pfad zum Gemfile hinzu, um den unverpackten Edelstein zu verknüpfen.

gem 'your', '2.0.1', :path => 'vendor/gems/your'
38
edap

Sie können den Bundler zwingen, die gems einzusetzen, die Sie mit "Bundle-Paket" und "Bundle-Installation --local" einsetzen

Auf Ihrer Entwicklungsmaschine:

bundle install

(Installiert benötigte Edelsteine ​​und macht Gemfile.lock)

bundle package

(Zwischenspeicher der Edelsteine ​​im Hersteller/Cache)

Auf dem Server:

bundle install --local

(--local bedeutet "die Edelsteine ​​vom Hersteller/Cache verwenden")

4

Das Hinzufügen von .gem zu vendor/cache scheint zu funktionieren. In Gemfile sind keine Optionen erforderlich.

0
Victor Moroz

Ich fand es am einfachsten, meinen eigenen Gem-Server mit geminabox auszuführen.

Siehe diese einfachen Anweisungen .

0
Dave Sag