Frage

Sagen wir mal in einer Rails-app haben Sie einige Edelsteine, die Sie in Ihrem app (nennen wir Sie "primäre Edelsteine") und Sie haben vendored Sie für die Portabilität.

Lassen Sie uns sagen, dass diejenigen,"primäre Edelsteine"benötigen auch Edelsteine, die von Ihrer eigenen - wir rufen Sie diese "sekundäre Edelsteine".

Wenn Sie beim einrichten Ihrer Umgebung.rb, haben Sie zu sagen:

config.gem 'primary-gem'

für alle die Edelsteine, die Sie verwenden direkt.

Aber, Sie müssen auch zu sagen ...

config.gem 'secondary-gem'

auch wenn Sie nicht mit, dass gem explizit in Ihrer app?

Oder ist es einfach genug, um enthalten die Edelstein in Ihrem vendor/gems Verzeichnis für Sie die Abholung Ihrer app?

War es hilfreich?

Lösung

Bei der Bereitstellung Schienen weiß über Ihre Abhängigkeiten, so dass, wenn Sie möchten, frieren Sie Ihre Edelsteine, dann können Sie

rake gems:unpack:dependencies

einfrieren Sie Sie in das Anbieter-Verzeichnis.

Zur Laufzeit ist es jedoch, die Juwelen job zu laden, die Abhängigkeiten, und in der Regel die Edelsteine, und so eine config.gem 'primary' funktionieren sollte.

Andere Tipps

Nein, Sie nicht, oder zumindest sollten Sie nicht.Jeder EDELSTEIN Spezifikation enthalten sollte es eine eigene Liste von Abhängigkeiten.Wenn der primäre gem installiert ist, RubyGems automatisch installieren jeder Edelstein Abhängigkeit von Kaskade.

In anderen Worten, wenn A ist von B, die erfordert C+D, brauchen Sie nur zu schreiben

config.gem 'A'

Wenn der Befehl

gem install A

ausgeführt wird, RubyGems wird löst alle Abhängigkeiten und installiert Sie.Sie können alle Ein-Abhängigkeiten laufen (von einem Rails-Projekt)

rake gems

Manchmal, ein JUWEL Autor möglicherweise vergessen, einige GEM-Abhängigkeiten, die in der Spezifikation.In diesem Fall sollten Sie diese in Ihrer Umgebung.rb zu zwingen, die Anwendung zu installieren.Natürlich, es ist auch eine gute Idee, um Kontakt mit dem GEM maintainer, so dass es kann lösen die problem.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top