2016-07-01 3 views
0

Ich habe ein Ruby-Paket verwendet, das ich als Juwel installiert habe. Jetzt möchte ich den Code ändern, um Fehler zu beheben und Features hinzuzufügen. Ich kann die Quelle für das Paket von GitHub herunterladen, aber ich bin mir nicht sicher, was ich als nächstes tun soll.So ersetzen Sie einen Ruby-Edelstein mit Code aus einem lokalen Quellverzeichnis

Gibt es eine einfache Möglichkeit, ein bestimmtes Juwel mit Code aus einem lokalen Quellverzeichnis zu ersetzen? Im Idealfall wäre der Prozess so einfach, dass ich fortlaufend aktualisieren könnte, wenn ich den Code ändere.

Dieses Paket wird auch als eine Abhängigkeit für andere Edelsteine ​​verwendet, und idealerweise verwenden die anderen Pakete, die dieses Juwel verwenden, die aktualisierte Version. (Da das Programm, das ich letztendlich ausführe, von einem dieser anderen Edelsteine ​​stammt.) Gibt es eine Möglichkeit, die Installation durchzuführen, ohne auch diese anderen Pakete von der Quelle zu installieren?

(Dies würde auf Linux, wenn es die Dinge einfacher macht.)

Antwort

2

Sie mit bundler Angenommen, Sie dies in Ihrem Gemfile einstellen. Wenn Sie nicht sicher sind, ob Ihr Bundler im Stammverzeichnis Ihres Projekts angezeigt wird. Es sollte eine Datei namens Gemfile ohne Erweiterung geben. Das Vorhandensein dieser Datei zeigt im Allgemeinen an, dass der Autor des Projekts Bundler verwendet. Alle unten beschriebenen Änderungen sollten innerhalb dieser Datei vorgenommen werden.

Die Schlüssel :path und :git im Gem-Hashmap können verwendet werden, um Rubygems auf verschiedene Orte zu verweisen. Wenn ich :path verwende, werde ich zwei verschiedene Ruby-Projekte haben. Das erste Projekt ist das aktive Projekt. Das Projekt, an dem ich gerade arbeite. Dieses Projekt benötigt den betreffenden Edelstein, den ich aktualisieren muss. Das zweite Projekt wird der ausgecheckte Quellcode des Edelsteins, den ich ändern möchte. Mit diesen zwei Projekteinstellungen kann ich die Gemfile des ersten Projekts bearbeiten und auf das zweite Projekt verweisen. Dies geschieht mit :path.

# The Gemfile of the first project 
gem 'the_gem_in_question', :path => '/the/path/to/the/second/project' 
+0

Wenn du die Gems-Version in die Gemdatei einfügst, wird Bundler die neue Version installieren, wenn du die Version in Gemfile und Gem stößt. – SoAwesomeMan

+0

Wie kann ich feststellen, ob ich Bundler verwende? - Ich habe wenig oder gar keine Erfahrung mit Edelsteinen. Bei dem von mir installierten Juwel handelte es sich um einen, der automatisch mit "Gem Install" heruntergeladen wurde, sodass ich nichts über die Einrichtung von Edelsteinen weiß. (Wenn Sie beispielsweise sagen "Setze das in Ihre Gemfile", ist dies im heruntergeladenen Quellverzeichnis oder irgendwo anders?) –

+0

@ R.M Ich habe die Antwort für Sie aktualisiert, um mehr Details zu enthalten. Bitte lassen Sie es mich wissen, wenn Sie möchten, dass ich mich auf etwas anderes ausweite. – Stewart

0

Es gibt zwei Möglichkeiten, diese Dateien zu ändern und die Änderungen anzuzeigen.

Man verwendet die Gemfile, um einen Pfad zu definieren. Zum Beispiel, wenn Sie das redis Juwel lokal wollen, können Sie git clone [email protected]:redis/redis-rb.git dann als Stewart zeigten oben, legen Sie sie in Ihre Gemfile diese Zeile gem 'redis', :path => './pathtoredis/redis' statt gem 'redis'

Einen anderen Weg, die ein wenig schneller ist aber schwierige Änderungen zu verfolgen und so ist zu nur gem open redis, um es in einem Texteditor zu öffnen.

+0

Wenn ich "gem open" versuche, bekomme ich einen "Unbekannten Befehl öffnen" - Gibt es eine Mindestversion von Juwel, die ich brauche, oder ein zusätzliches Paket, das installiert werden muss? –

Verwandte Themen