2010-01-27 8 views
7

Per quanto ne so, sia rails:freeze:gems che il rake gems:unpack stanno posizionando le gemme su /vendor. rails:freeze:gems li posiziona su /vendor/rails, gems:unpack posizionali su /vendor/gems. Il punto per me sembra essere lo stesso, comunque. In entrambi i casi l'obiettivo è quello di correggere le gemme e le loro versioni come erano durante lo sviluppo. C'è qualche altra differenza? Mi sembra una duplicazione ora ..Qual è la differenza tra le rastrelliere: congelare: gemme e gemme di rastrello: decomprimere?

risposta

7

Dalla mia comprensione, gemma: scompattare sarà decomprimere terze parti gemma vostra applicazione ha bisogno in vendor/gemme.
binari: blocco: le gemme bloccano solo quelle gemme che hanno a che fare con le rotaie stesse, quindi congela la tua app a una versione specifica di binari. Quindi la diversa directory/vendor/rails.

di commentare un po 'di più:
C'è questa linea in config/environment.rb
# Specifies gem version of Rails to use when vendor/rails is not present RAILS_GEM_VERSION = '2.3.2' unless defined? RAILS_GEM_VERSION

Quindi per impostazione predefinita, le rotaie sarà verificare se il venditore/rotaie esiste directory, e utilizzare le versioni di quelle gemme se lo fa. In caso contrario, è necessario impostare la versione di rotaie userà, e rotaie cercherà di tirare le gemme dal sistema locale.

Quindi l'unica differenza tra i due comandi che vedo è che rails:freeze:gems scarica SOLO i file di rotaie in fornitore/rotaie, che è esattamente dove le rotaie vogliono che siano.

Il motivo per cui si desidera utilizzare gem:unpack è di scaricare le gemme di terze parti da cui dipende l'applicazione, quindi ovunque l'applicazione venga eseguita, queste gemme non dovranno essere installate localmente.

Si può pensare a rails:freeze:gems come una scelta rapida che fa semplicemente un gem:unpack di solo gemme di rotaie nei binari di directory (/ vendor/rails), in modo che non sia necessario eseguirlo manualmente. Ma sì, dietro le quinte mi aspetto rails:freeze:gems probabilmente utilizza gem:unpack

+0

Grazie! Chiarifica molte cose. Ho giocato con i compiti. Tuttavia mi sembra di essere strano per gestire le rotaie gemme e le altre gemme in modo diverso. In un certo senso sia 3rd party e le rotaie gemme sono solo gemme. Penso che Bundler lo gestisca allo stesso modo senza alcuna distinzione. – fifigyuri

Problemi correlati