Ricerca…


Osservazioni

Documentazione Gemfile

Per i progetti che dovrebbero crescere, è una buona idea aggiungere commenti al tuo Gemfile . In questo modo, anche in configurazioni di grandi dimensioni, saprai ancora cosa fa ogni gemma, anche se il nome non è auto-esplicativo e lo hai aggiunto 2 anni fa.

Questo può anche aiutarti a ricordare perché hai scelto una determinata versione e di conseguenza rivalutare in seguito i requisiti della versione.

Esempi:

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

Cos'è una gemma?

Una gemma è l'equivalente di un plugin o un'estensione per il linguaggio di programmazione ruby.

Per essere precisi anche i binari non sono altro che una gemma. Molte gemme sono costruite su rotaie o altre gemme (dipendono dalla gemma) o sono indipendenti.

Nel tuo progetto Rails

Gemfile

Per il tuo progetto Rails hai un file chiamato Gemfile . Qui puoi aggiungere le gemme che desideri includere e utilizzare nel tuo progetto. Una volta aggiunto, è necessario installare la gemma usando il bundler (vedere la sezione Bundler).

Gemfile.lock

Una volta fatto questo, il tuo Gemfile.lock verrà aggiornato con le gemme appena aggiunte e le loro dipendenze. Questo file blocca le gemme utilizzate in modo che utilizzino quella versione specifica dichiarata in quel file.

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)

Questo esempio è per la gemma devise . Nel file Gemfile.lock viene dichiarata la versione 4.0.3 da indicare quando si installa il progetto su un'altra macchina o sul server di produzione con la versione specificata da utilizzare.

Sviluppo

O una singola persona, un gruppo o un'intera comunità lavora e mantiene una gemma. Il lavoro svolto è di solito rilasciato dopo alcuni issues sono stati risolti o features sono state aggiunte.

Di solito le versioni seguono il principio di Semantic Versioning 2.0.0 .

Bundler

Il modo più semplice per gestire e gestire le gemme è utilizzare il bundler . Bundler è un gestore di pacchetti paragonabile a Bower.

Per usare bundler devi prima installarlo.

gem install bundler

Dopo aver installato ed eseguito il bundler, tutto ciò che devi fare è aggiungere gemme al tuo Gemfile ed eseguire

bundle

nel tuo terminale. Questo installa le gemme appena aggiunte al tuo progetto. In caso di problemi, riceverai un messaggio nel tuo terminale.

Se sei interessato a maggiori dettagli, ti suggerisco di dare un'occhiata ai documenti .

Gemfiles

Per iniziare, i gemfile richiedono almeno un'origine, sotto forma di URL per un server RubyGems.

Genera un Gemfile con il sorgente rubygems.org predefinito eseguendo il bundle init . Usa https in modo che la tua connessione al server venga verificata con SSL.

source 'https://rubygems.org'

Quindi, dichiara le gemme di cui hai bisogno, compresi i numeri di versione.

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

La maggior parte degli specificatori di versione, come> = 1.0, sono autoesplicativi. Lo specificatore ~> ha un significato speciale. ~> 2.0.3 è identico a> = 2.0.3 e <2.1. ~> 2.1 è identico a> = 2.1 e <3.0. ~> 2.2.beta corrisponderà alle versioni prerelease come 2.2.beta.12.

I repository Git sono anche fonti gemme valide, purché il repository contenga una o più gemme valide. Specificare cosa controllare con :tag :branch , o :ref . L'impostazione predefinita è il ramo master .

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

Se desideri utilizzare una gemma decompressa direttamente dal filesystem, imposta semplicemente l'opzione: path al percorso contenente i file della gem.

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

Le dipendenze possono essere inserite in gruppi. I gruppi possono essere ignorati al momento dell'installazione (usando --without ) o richiesti contemporaneamente (usando Bundler.require ).

gem 'rails_12factor', group: :production

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

Puoi specificare la versione richiesta di Ruby nel Gemfile con ruby . Se il Gemfile è caricato su una diversa versione di Ruby, Bundler solleverà un'eccezione con una spiegazione.

ruby '2.3.1'

Gemsets

Se stai usando RVM(Ruby Version Manager) allora usare un gemset per ogni progetto è una buona idea. Un gemset è solo un contenitore che puoi usare per tenere le gemme separate l'una dall'altra. La creazione di un gemset per progetto ti consente di cambiare le gemme (e le versioni gem) per un progetto senza rompere tutti gli altri tuoi progetti. Ogni progetto deve solo preoccuparsi delle proprie gemme.

RVM fornisce (> = 0.1.8) un interprete @global gemset per ruby. Le gemme che installi sul @global gemset per un dato rubino sono disponibili per tutti gli altri set di gemme che crei in associazione con quel rubino. Questo è un buon modo per consentire a tutti i tuoi progetti di condividere lo stesso gioi installato per una specifica installazione dell'interprete ruby.

Creazione di gemme

Supponiamo che tu abbia già installato ruby-2.3.1 e tu lo abbia selezionato usando questo comando:

rvm use ruby-2.3.1

Ora per creare gemset per questa versione rubino:

rvm gemset create new_gemset

dove new_gemset è il nome di gemset. Per vedere l'elenco di gemsets disponibili per una versione ruby:

rvm gemset list

per elencare le gemme di tutte le versioni di rubino:

rvm gemset list_all

usare un gemset dalla lista (supponiamo che new_gemset sia il gemset che voglio usare):

rvm gemset use new_gemset

puoi anche specificare la versione rubino con il gemset se vuoi passare ad un'altra versione di rubino:

rvm use ruby-2.1.1@new_gemset

per specificare un gemset predefinito per una particolare versione ruby:

rvm use 2.1.1@new_gemset --default

per rimuovere tutte le gemme installate da un gemset puoi svuotarlo tramite:

rvm gemset empty new_gemset

per copiare un gioiello da un rubino all'altro puoi farlo da:

rvm gemset copy 2.1.1@rails4 2.1.2@rails4

eliminare un gemset:

rvm gemset delete new_gemset

per vedere il nome attuale del gemset:

rvm gemset name

installare una gemma nel gemset globale:

rvm @global do gem install ...

Inizializzazione dei set di gemme durante le installazioni di Ruby

Quando installi un nuovo ruby, RVM non solo crea due gemsets (il default, il gemset vuoto e il gemset globale), ma usa anche una serie di file modificabili dall'utente per determinare quali gemme installare.

Lavorando in ~/.rvm/gemsets , ~/.rvm/gemsets cerca global.gems e default.gems usando una global.gems albero in base alla stringa ruby ​​da installare. Utilizzando l'esempio di ree-1.8.7-p2010.02 , ree-1.8.7-p2010.02 controllerà (e importerà da) i seguenti file:

~/.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

Ad esempio, se hai modificato ~/.rvm/gemsets/global.gems aggiungendo queste due righe:

bundler
awesome_print

ogni volta che installi un nuovo rubino, queste due gemme vengono installate nel tuo gemst globale. global.gems file default.gems e global.gems vengono solitamente sovrascritti durante l'aggiornamento di rvm.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow