Come per la risposta precedente, questo è un bel po 'da coprire, quindi considera una breve introduzione.
gems sono il modo in cui le librerie Ruby sono confezionate. Stanno a Ruby quali vasi stanno a Java. All'interno di un file gem, trovi il codice Ruby (file .rb), ma anche i test e un file speciale che fornisce informazioni sulla gemma stessa, come il nome, le dipendenze e la versione (gemspec). Qualsiasi progetto Ruby può definire le gemme di cui ha bisogno tramite un Gemfile che deve solo dichiarare le dipendenze. Rubygems è il nome del gestore pacchetti - lo strumento utilizzato per installare i pacchetti (mentre le gemme sono i pacchetti stessi). Rubygems ora fa parte di Ruby.
è ciò che rende sopportabile la gestione delle gemme. In base al tuo Gemfile, una semplice chiamata a bundler utilizzando bundle install scaricherà e installerà tutte le gemme richieste. Usando il comando gem standard, dovresti installare ognuno di essi manualmente, usando gem install <gem_name>
.Bundler non fa parte di Ruby (è esso stesso packaged as a gem), ma è uno "standard de facto" per la maggior parte delle applicazioni (non troverete molte persone che non lo usano, e non ci sono buoni motivi per non usarlo, in realtà).
RVM è uno strumento che consente di installare più versioni di Ruby su una macchina, passando da una all'altra quando necessario. Questo può essere usato per installare sia un Ruby 1.8 che 1.9, o anche un "MRI" (Matz's Ruby, l'implementazione di default) e alternative (come JRuby o Rubinius). Si noti che RVM non è il solo in questo campo, si veda ad esempio rbenv.
A gemset in RVM è un insieme di gemme specifiche per un determinato contesto, in genere un progetto. Questo è utile se ad esempio stai sviluppando diverse applicazioni, ognuna con le sue serie di gemme, e vuoi tenerle separate.
system Ruby è, quando si utilizza RVM, la versione di Ruby installata sulla macchina (cioè, non tramite RVM).
Se stai iniziando, gemme e bundler ti interessano. Puoi lasciare RVM e pietre preziose da parte per ora.
Buona risposta, potresti chiarire: qual è la differenza tra gemme e RubyGems? E tra gemspec e Gemfile? Inoltre, quali di questi programmi (ad es. Bundler) elencati sopra sono inclusi in "Ruby" e quali sono applicazioni separate (credo che RVM sia separato)? Ed è gemset solo un concetto solo all'interno di RVM o è all'interno del core Ruby (o altre cose, come rbenv menzionato nell'altra risposta)? E se bundler semplifica la gestione delle gemme, qual è il modo in cui i pre-bundler lo fanno? (Ad esempio, come gestiresti le gemme senza bundler, solo così lo so, anche se non lo farei mai in quel modo.) Grazie! – user779159
Aggiornato di conseguenza. – Martin
Quindi Rubygems è il nome del gestore di pacchetti, che invochi con il comando 'gem'? E Bundler è anche parte di Ruby stesso, proprio come Rubygems, o devo includerlo in qualche modo? – user779159