Ruby on Rails
Gemmes
Recherche…
Remarques
Documentation Gemfile
Pour les projets qui sont censés se développer, il est Gemfile
ajouter des commentaires à votre Gemfile
. De cette façon, même dans les grandes configurations, vous saurez toujours ce que fait chaque bijou, même si le nom n’est pas explicite et que vous l’avez ajouté il ya 2 ans.
Cela peut également vous aider à vous rappeler pourquoi vous avez choisi une version donnée et, par conséquent, à réévaluer ultérieurement les exigences de la version.
Exemples:
# temporary downgrade for TeamCity
gem 'rake', '~> 10.5.0'
# To upload invoicing information to payment provider
gem 'net-sftp'
Qu'est-ce qu'un bijou?
Un bijou est l'équivalent d'un plugin ou d'une extension pour le langage de programmation ruby.
Être exact, même les rails, n’est rien de plus qu’un joyau. Beaucoup de gemmes sont construites sur des rails ou d'autres gemmes (elles dépendent de la gemme) ou sont autonomes.
Dans votre projet Rails
Gemfile
Pour votre projet Rails, vous avez un fichier appelé Gemfile
. Ici, vous pouvez ajouter des gemmes que vous souhaitez inclure et utiliser dans votre projet. Une fois ajouté, vous devez installer la gem en utilisant bundler
(voir la section bundler
).
Gemfile.lock
Une fois que vous avez fait cela, votre Gemfile.lock
sera mis à jour avec vos gems nouvellement ajoutés et leurs dépendances. Ce fichier verrouille vos gems utilisés afin qu'ils utilisent cette version spécifique déclarée dans ce fichier.
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)
Cet exemple est pour le bijou devise
. Dans le Gemfile.lock
la version 4.0.3
est déclarée pour indiquer lors de l’installation de votre projet sur une autre machine ou sur votre serveur de production la version spécifiée à utiliser.
Développement
Une seule personne, un groupe ou une communauté entière travaille et entretient une gemme. Le travail effectué est généralement libéré après certains issues
ont été corrigés ou features
ont été ajoutées.
Généralement, les versions suivent le principe Semantic Versioning 2.0.0 .
Bundler
Le moyen le plus simple de gérer et de gérer les gemmes consiste à utiliser un bundler
. Bundler est un gestionnaire de paquets comparable à Bower.
Pour utiliser un bundler, vous devez d'abord l'installer.
gem install bundler
Une fois que vous avez un bundler, tout ce que vous avez à faire est d'ajouter des gemmes à votre Gemfile
et de l'exécuter.
bundle
dans votre terminal. Cela installe vos gems nouvellement ajoutés à votre projet. En cas de problème, vous recevrez une invite dans votre terminal.
Si vous êtes intéressé par plus de détails, je vous suggère de regarder les documents .
Gemfiles
Pour commencer, les gemfiles nécessitent au moins une source, sous la forme de l'URL d'un serveur RubyGems.
Générez un Gemfile avec la source rubygems.org par défaut en exécutant bundle init
. Utilisez https pour que votre connexion au serveur soit vérifiée avec SSL.
source 'https://rubygems.org'
Ensuite, déclarez les gemmes dont vous avez besoin, y compris les numéros de version.
gem 'rails', '4.2.6'
gem 'rack', '>=1.1'
gem 'puma', '~>3.0'
La plupart des spécificateurs de version, tels que> = 1.0, sont explicites. Le spécificateur ~> a une signification particulière. ~> 2.0.3 est identique à> = 2.0.3 et <2.1. ~> 2.1 est identique à> = 2.1 et <3.0. ~> 2.2.beta correspondra aux versions préliminaires comme 2.2.beta.12.
Les référentiels Git sont également des sources de gem, à condition que le référentiel en contienne un ou plusieurs. Spécifiez ce que vous voulez extraire avec :tag
:branch
ou :ref
. La valeur par défaut est le master
branche.
gem 'nokogiri', :git => 'https://github.com/sparklemotion/nokogiri', :branch => 'master'
Si vous souhaitez utiliser une gem sans décompression directement depuis le système de fichiers, définissez simplement l'option: path sur le chemin contenant les fichiers de la gem.
gem 'extracted_library', :path => './vendor/extracted_library'
Les dépendances peuvent être regroupées. Les groupes peuvent être ignorés lors de l'installation (en utilisant --without
) ou requis en même temps (en utilisant Bundler.require
).
gem 'rails_12factor', group: :production
group :development, :test do
gem 'byebug'
gem 'web-console', '~> 2.0'
gem 'spring'
gem 'dotenv-rails'
end
Vous pouvez spécifier la version requise de Ruby dans le Gemfile avec ruby
. Si le Gemfile est chargé sur une autre version de Ruby, Bundler générera une exception avec une explication.
ruby '2.3.1'
Gemsets
Si vous utilisez RVM(Ruby Version Manager)
utiliser un gemset
pour chaque projet est une bonne idée. Un gemset
est juste un conteneur que vous pouvez utiliser pour séparer les gemmes les unes des autres. Créer un gemset
par projet vous permet de modifier des gemmes (et des versions de gemme) pour un projet sans casser tous vos autres projets. Chaque projet n'a besoin que de s'inquiéter de ses propres joyaux.
RVM
fournit (> = 0.1.8) un @global gemset
par interprète de ruby. Les gemmes que vous installez sur le @global gemset
pour un rubis donné sont disponibles pour tous les autres gemsets que vous créez en association avec ce ruby. C'est un bon moyen de permettre à tous vos projets de partager le même bijou installé pour une installation spécifique d'interpréteur Ruby.
Créer des gemsets
Supposons que vous avez déjà installé ruby-2.3.1
et que vous l'avez sélectionné en utilisant cette commande:
rvm use ruby-2.3.1
Maintenant, pour créer gemset pour cette version ruby:
rvm gemset create new_gemset
où le new_gemset
est le nom de gemset. Pour voir la liste des gemsets disponibles pour une version ruby:
rvm gemset list
lister les gemmes de toutes les versions rubis:
rvm gemset list_all
utiliser un gemset de la liste (supposons que new_gemset
soit le gemset que je veux utiliser):
rvm gemset use new_gemset
vous pouvez également spécifier la version ruby avec le gemset si vous souhaitez passer à une autre version de ruby:
rvm use ruby-2.1.1@new_gemset
spécifier un gemset par défaut pour une version ruby particulière:
rvm use 2.1.1@new_gemset --default
pour supprimer toutes les gemmes installées d'un gemset, vous pouvez le vider par:
rvm gemset empty new_gemset
pour copier un gemset d'un rubis à un autre, vous pouvez le faire en:
rvm gemset copy 2.1.1@rails4 2.1.2@rails4
supprimer un gemset:
rvm gemset delete new_gemset
pour voir le nom actuel du gemset:
rvm gemset name
installer un bijou dans le gemset global:
rvm @global do gem install ...
Initialisation des gemsets pendant les installations Ruby
Lorsque vous installez un nouveau ruby, RVM ne crée pas seulement deux gemsets (le gemset vide et le gemset global par défaut), il utilise également un ensemble de fichiers modifiables par l'utilisateur pour déterminer les gems à installer.
En travaillant dans ~/.rvm/gemsets
, rvm recherche global.gems
et default.gems
utilisant une hiérarchie arborescente basée sur la chaîne ruby installée. En utilisant l'exemple de ree-1.8.7-p2010.02
, rvm va vérifier (et importer depuis) les fichiers suivants:
~/.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
Par exemple, si vous avez modifié ~/.rvm/gemsets/global.gems
en ajoutant ces deux lignes:
bundler
awesome_print
Chaque fois que vous installez un nouveau ruby, ces deux gems sont installés dans votre gemset global. global.gems
fichiers default.gems
et global.gems
sont généralement écrasés lors de la mise à jour de rvm.