Ruby on Rails
Edelsteine
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.