Wie kann ich ein lokales Juwel installieren?

Antworten:

288

Ja, wenn Sie dies tun gem install, wird zuerst das aktuelle Verzeichnis durchsucht. Wenn Ihre .gem-Datei vorhanden ist, wird sie dann abgerufen. Ich habe es auf der Edelsteinreferenz gefunden , die Sie vielleicht auch nützlich finden:

gem install installiert den benannten gem. Es wird versucht, eine lokale Installation durchzuführen (dh eine .gem-Datei im aktuellen Verzeichnis). Wenn dies fehlschlägt, wird versucht, die neueste Version des gewünschten Gems herunterzuladen und zu installieren.

Chris Bunch
quelle
2
Link endet in unendlichen Weiterleitungen :(
Ain Tohvri
2
Einchecken, um zu sagen, dass dies für mich im Jahr 2019 funktioniert.
Charles Wood
1
Dies funktioniert nicht für mich im Jahr 2019
Bilderstürmer
1
Ich habe eine Gemfileaber keine .gemDatei. Was ist diese .gemDatei? Was soll es enthalten? - Warte - ich verstehe. Du meinst eine gem-name.gemDatei. Denken Sie daran, dass es unter Unix ziemlich normal ist, dass eine Datei mit einem 'beginnt.' es ist also besser, es zu formulieren.
Martin
Ich kann ab der Zukunft von 2020 bestätigen, dass der Link für mich funktioniert. Für den Fall, dass es in ferner Zukunft nicht funktioniert, hier der Schnappschuss von
Jed Burke,
329

Auch können Sie verwenden gem install --local path_to_gem/filename.gem

Dadurch wird der übliche Edelstein-Repository-Scan übersprungen, der auftritt, wenn Sie aufhören --local.

Sie können andere Magie mit finden gem install --help.

JasonTrue
quelle
Ich lade ein Juwel wie Rubygems im Zip-Format herunter. Es gibt hier also keine .gem-Datei. Wie installiere ich das von lokal? Vielen Dank.
Erran Morad
3
@ BoratSagdiyev, eine Zip-Datei ist kein Juwel. Wie bei den meisten Zip-Dateien müssen Sie sie entpacken, bevor Sie viel damit anfangen können. Wenn es einen Edelstein enthält, können Sie die Edelsteininstallation für die extrahierte .gem-Datei verwenden. Ich erinnere mich nicht an die Interna des Edelsteinformats; Es ist möglich, dass es sich nur um eine Zip-Datei mit einem speziellen Header handelt, aber Rubygems erkennt Zip-Dateien nicht als solche.
JasonTrue
62

Sie können auch den vollständigen Dateinamen für Ihre Gem-Datei verwenden:

gem install /full/path/to/your.gem

Das funktioniert auch - es ist wahrscheinlich der einfachste Weg

Lesmana
quelle
38

Wenn Sie Ihre Edelsteine ​​mit Bundler erstellen:

# do this in the proper directory
bundle gem foobar

Sie können sie mit Rake installieren, nachdem sie geschrieben wurden:

# cd into your gem directory
rake install

Wahrscheinlich weiß rake installauch Ihr heruntergeladener Edelstein Bescheid .

Boris Stitnicky
quelle
3
Dies scheint die beste moderne Antwort zu sein. akzeptierte Antwort ist von vor 8 Jahren
sixty4bit
14

Wenn Sie die Projektdatei von github oder einer anderen scm-Host-Site herunterladen, verwenden Sie gem build, um das Projekt zuerst zu erstellen, damit Sie eine Whatever.gem-Datei im aktuellen Verzeichnis erhalten. Dann installieren Sie es!

hechen0
quelle
13

Wenn Sie an einer lokal modifizierten Gabel eines Edelsteins arbeiten möchten, ist der beste Weg, dies zu tun

gem 'pry', path: './pry'

in einer Gemfile.

... wo ./prywäre der Klon Ihres Repositorys? Einfach bundle installeinmal ausführen und alle Änderungen an den Edelsteinquellen, die Sie vornehmen, werden sofort angezeigt. Mit gem install pry/pry.gemwerden die Quellen immer noch verschoben GEM_PATHund Sie müssen immer beide ausführen bundle gem pryund gem updatetesten.

Matthias Winkelmann
quelle
5

Gehen Sie zu dem Pfad, in dem sich der Edelstein befindet, und rufen Sie an gem install -l gemname.gem

leobelizquierdo
quelle
0

Nun, das ist meine DRY-Installation:

  1. Schauen Sie in einen Computer mit bereits installiertem Edelsteine im Cache - Verzeichnis erforderlich (standardmäßig [Ruby Installation version]/lib/ruby/gems/[Ruby version]/cache)
  2. Kopieren Sie alle " *.gemsDateien" auf einen Computer ohne Edelsteine ​​im eigenen Edelstein-Cache (standardmäßig derselbe Benutzerpfad des ersten Schritts:[Ruby Installation version]/lib/ruby/gems/[Ruby version]/cache )
  3. In der Konsole befindet sich im Edelstein-Cache (CD [Ruby Installation version]/lib/ruby/gems/[Ruby version]/cache) und feuert die gem install anygemwithdependencieshere(am Beispiel cucumber-2.99.0)

Es ist DRY, weil nach der Installation eines Gems die Gem-Datei standardmäßig von Rubygems in das Cache-Gem-Verzeichnis gestellt wird und es nicht sinnvoll ist, diese Dateien zu duplizieren. Es ist einfacher, wenn beide Computer die gleichen Versionen haben (oder durch paranoische Sicherheitsregeln blockiert werden: v).

Bearbeiten: In einigen Versionen von Ruby oder Rubygems funktioniert es nicht und löst Warnungen oder Fehler aus. Sie können Edelsteine ​​an einer anderen Stelle ablegen, aber nicht DRY erhalten. Eine andere Alternative ist die Verwendung des integrierten Befehls launch gem serverund das Hinzufügen der localhost-URL in Edelsteinquellen Informationen unter: https://guides.rubygems.org/run-your-own-gem-server/

Daniel Antonio Nuñez Carhuayo
quelle
0

Sie können Edelsteine ​​von https://rubygems.org/gems/ herunterladen. oder Ihren lokalen Edelstein über Bundle und Rack erstellen.

z.B:

  • Bundle Gem yourGemName
  • Rechen installieren

Achten Sie darauf, Abhängigkeiten zu installieren, bevor Sie tatsächliche Edelsteine ​​installieren.

  • gem install --local /pathToFolder/xxx-2.6.1.gem

Hinweis: Wenn Sie fließendes td-Mittel und Rubin auf derselben Maschine verwenden. Stellen Sie sicher, dass Sie den Befehl td-agent-gem von td-agent verwenden. td-agent hat einen eigenen Ruby.

Vinayak Mishra
quelle