Suche…


Bemerkungen

Gemfile-Dokumentation

Für Projekte, die voraussichtlich wachsen, ist es eine gute Idee, Kommentare zu Ihrem Gemfile . Auf diese Weise wissen Sie auch in großen Setups immer noch, was jeder Edelstein tut, auch wenn der Name nicht selbsterklärend ist und Sie ihn vor zwei Jahren hinzugefügt haben.

Auf diese Weise können Sie sich auch daran erinnern, warum Sie sich für eine bestimmte Version entschieden haben, und die Versionsanforderung später erneut prüfen.

Beispiele:

# temporary downgrade for TeamCity
gem 'rake', '~> 10.5.0'
# To upload invoicing information to payment provider
gem 'net-sftp'

Was ist ein Juwel?

Ein gem ist das Äquivalent zu einem Plugin oder einer Erweiterung für die Programmiersprache Ruby.

Um genau zu sein, sogar Schienen sind nichts weiter als ein Juwel. Viele Edelsteine ​​werden auf Schienen oder anderen Edelsteinen gebaut (sie sind von diesem Edelstein abhängig) oder sind eigenständig.

In Ihrem Rails-Projekt

Gemfile

Für Ihr Rails-Projekt haben Sie eine Datei namens Gemfile . Hier können Sie Edelsteine ​​hinzufügen, die Sie in Ihr Projekt aufnehmen und verwenden möchten. Nach dem Hinzufügen Sie benötigen den Edelstein installieren , indem Sie bundler (siehe Abschnitt Bündler).

Gemfile.lock

Sobald Sie dies getan haben, wird Ihr Gemfile.lock mit Ihren neu hinzugefügten Edelsteinen und ihren Abhängigkeiten aktualisiert. Diese Datei sperrt Ihre verwendeten Edelsteine, so dass sie die in dieser Datei deklarierte Version verwenden.

GEM
remote: https://rubygems.org/
specs:
devise (4.0.3)
bcrypt (~> 3.0)
orm_adapter (~> 0.1)
railties (>= 4.1.0, < 5.1)
responders
warden (~> 1.2.3)

Dieses Beispiel ist für das Juwel devise . In der Gemfile.lock die Version 4.0.3 deklariert, um bei der Installation Ihres Projekts auf einem anderen Computer oder auf Ihrem Produktionsserver anzugeben, welche Version verwendet werden soll.

Entwicklung

Entweder arbeitet eine einzelne Person, eine Gruppe oder eine ganze Gemeinschaft an einem Juwel. Die geleistete Arbeit wird normalerweise freigegeben, nachdem bestimmte issues behoben oder features hinzugefügt wurden.

In der Regel folgen die Releases dem Semantic Versioning 2.0.0- Prinzip.

Bundler

Der einfachste Weg, Edelsteine ​​zu handhaben und zu verwalten, ist der bundler . Bundler ist ein Paketmanager, der mit Bower vergleichbar ist.

Um den Bundler zu verwenden, müssen Sie ihn zunächst installieren.

gem install bundler

Nachdem Sie den Bundler in Betrieb genommen haben, müssen Sie nur noch Edelsteine ​​zu Ihrem Gemfile und ausführen

bundle

in Ihrem Terminal. Dadurch werden Ihre neu hinzugefügten Edelsteine ​​in Ihrem Projekt installiert. Sollte ein Problem auftreten, erhalten Sie eine Aufforderung in Ihrem Terminal.

Wenn Sie an weiteren Details interessiert sind, schlage ich vor, die Dokumente zu lesen .

Gemfiles

Zum Starten benötigen gemfiles mindestens eine Quelle in Form der URL für einen RubyGems-Server.

Generieren Sie eine Gemfile mit der Standardquelle rubygems.org, indem Sie das bundle init ausführen. Verwenden Sie https, damit Ihre Verbindung zum Server mit SSL überprüft wird.

source 'https://rubygems.org'

Als nächstes deklarieren Sie die benötigten Edelsteine ​​einschließlich der Versionsnummern.

gem 'rails', '4.2.6'
gem 'rack',  '>=1.1'
gem 'puma',  '~>3.0'

Die meisten Versionsbezeichner, wie> = 1.0, sind selbsterklärend. Der Spezifizierer ~> hat eine besondere Bedeutung. ~> 2.0.3 ist identisch mit> = 2.0.3 und <2.1. ~> 2.1 ist identisch mit> = 2.1 und <3.0. ~> 2.2.beta wird mit Vorabversionen wie 2.2.beta.12 übereinstimmen.

Git-Repositories sind ebenfalls gültige Edelsteinquellen, sofern das Repo einen oder mehrere gültige Edelsteine ​​enthält. Legen Sie fest, was mit dem :tag Befehl überprüft werden soll :tag ,: :branch oder :ref . Die Standardeinstellung ist der master - Zweig.

gem 'nokogiri', :git => 'https://github.com/sparklemotion/nokogiri', :branch => 'master'

Wenn Sie einen entpackten Edelstein direkt aus dem Dateisystem verwenden möchten, setzen Sie die Option: path einfach auf den Pfad, der die Dateien des Edelsteins enthält.

gem 'extracted_library', :path => './vendor/extracted_library'

Abhängigkeiten können in Gruppen platziert werden. Gruppen können bei der Installation Zeit (unter Verwendung ignoriert werden --without ) oder erforderlich , um alle auf einmal (mit Bundler.require ).

gem 'rails_12factor', group: :production

group :development, :test do
  gem 'byebug'
  gem 'web-console', '~> 2.0'
  gem 'spring'
  gem 'dotenv-rails'
end

Sie können die gewünschte Version von Ruby in der Gemfile mit ruby angeben. Wenn die Gemfile-Datei in einer anderen Ruby-Version geladen wird, gibt Bundler eine Ausnahme mit einer Erklärung aus.

ruby '2.3.1'

Gemsets

Wenn Sie RVM(Ruby Version Manager) ist die Verwendung eines gemset für jedes Projekt eine gute Idee. Ein gemset ist nur ein Container, mit dem Sie die Edelsteine ​​voneinander trennen können. gemset Sie ein gemset pro Projekt gemset , können Sie Edelsteine ​​(und Edelsteinversionen) für ein Projekt ändern, ohne alle anderen Projekte zu gemset . Jedes Projekt muss sich nur um seine eigenen Edelsteine ​​kümmern.

RVM bietet (> = 0.1.8) ein @global gemset pro Ruby-Interpreter. Gems, die @global gemset für ein bestimmtes Rubin in das @global gemset installieren, stehen allen anderen Gemsets zur Verfügung, die Sie in Verbindung mit diesem Rubin erstellen. Dies ist ein guter Weg, um zuzulassen, dass alle Ihre Projekte den gleichen installierten Edelstein für eine bestimmte Ruby-Interpreterinstallation verwenden.

Gemsets erstellen

Angenommen, Sie haben bereits ruby-2.3.1 installiert und Sie haben es mit folgendem Befehl ausgewählt:

rvm use ruby-2.3.1

Um nun ein Gemset für diese Ruby-Version zu erstellen:

rvm gemset create new_gemset

Dabei ist das new_gemset der Name von gemset. So zeigen Sie die Liste der verfügbaren Edelsteine ​​für eine Ruby-Version an:

rvm gemset list

Um die Edelsteine ​​aller Ruby-Versionen aufzulisten:

rvm gemset list_all

um ein gemset aus der Liste zu verwenden (angenommen, new_gemset ist das gemset, das ich verwenden möchte):

rvm gemset use new_gemset

Sie können die Ruby-Version auch mit dem Gemset angeben, wenn Sie zu einer anderen Ruby-Version wechseln möchten:

rvm use ruby-2.1.1@new_gemset

So legen Sie ein Standard-Gemset für eine bestimmte Ruby-Version fest:

rvm use 2.1.1@new_gemset --default

Um alle installierten Edelsteine ​​aus einem Gemset zu entfernen, können Sie es leeren, indem Sie:

rvm gemset empty new_gemset

Um ein Gemset von einem Rubin in einen anderen zu kopieren, können Sie es tun, indem Sie:

rvm gemset copy 2.1.1@rails4 2.1.2@rails4

ein gemset löschen:

rvm gemset delete new_gemset

um den aktuellen gemsetnamen zu sehen:

rvm gemset name

So installieren Sie einen Edelstein im globalen Gemset:

rvm @global do gem install ...

Initialisieren von Gemsets während der Ruby-Installation

Wenn Sie einen neuen Ruby installieren, erstellt RVM nicht nur zwei Gemsets (das standardmäßige, leere Gemset und das globale Gemset), sondern verwendet auch eine Reihe von vom Benutzer bearbeitbaren Dateien, um zu bestimmen, welche Gems installiert werden sollen.

Arbeiten in ~/.rvm/gemsets , rvm searchs für global.gems und default.gems eine Baum-Hierachie auf dem Rubin - String basierend Verwendung installiert. Am Beispiel von ree-1.8.7-p2010.02 überprüft und importiert rvm die folgenden Dateien:

~/.rvm/gemsets/ree/1.8.7/p2010.02/global.gems
~/.rvm/gemsets/ree/1.8.7/p2010.02/default.gems
~/.rvm/gemsets/ree/1.8.7/global.gems
~/.rvm/gemsets/ree/1.8.7/default.gems
~/.rvm/gemsets/ree/global.gems
~/.rvm/gemsets/ree/default.gems
~/.rvm/gemsets/global.gems
~/.rvm/gemsets/default.gems

Wenn Sie beispielsweise ~/.rvm/gemsets/global.gems bearbeitet haben, indem Sie diese beiden Zeilen hinzufügen:

bundler
awesome_print

Jedes Mal, wenn Sie einen neuen Rubin installieren, werden diese beiden Edelsteine ​​in Ihrem globalen Gemset installiert. default.gems und global.gems Dateien werden in der Regel während der Aktualisierung von rvm überschrieben.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow