Ho notato che su rubygems.org molte gemme suggeriscono di specificarle per versione principale piuttosto che per versione esatta. Per esempio ...Devo specificare le esatte versioni nel mio Gemfile?
gem "haml-rails", "~> 0.3.4" # "$ bundle install" will acquire the
# latest version before 1.0.
Tuttavia, sulla base della Bundler docs sembrava a me come sarebbe meglio inchiodare la versione esatta come questo ...
gem "haml-rails", "0.3.4"
Quindi c'è la tua gemma di rotaie e tutte le sue dipendenze non andranno alla deriva. Se verifichi il progetto su una macchina diversa poche settimane dopo e esegui $ bundle install
avrai esattamente le stesse versioni di tutto ciò che hai specificato.
Ho visto i comunicati stampa interrompere le cose e ho pensato che parte dell'intera idea di Bundler fosse "Bundle.lock
" tutte le versioni della gemma.
Ma su rubygems.org usano "~>" molto quindi forse mi manca qualcosa?
Qualsiasi chiarimento sarebbe molto utile per me nel comprendere Bundler e la gestione delle gemme.
OK, quindi le gemme rimangono nelle versioni consolidate registrate in Gemfile.lock. Quindi qual è lo scopo di aggiungere "~>"? Quanto è vantaggioso? – Ethan
@ethan RubyGems ha un [doc] (http://rubygems.rubyforge.org/rubygems-update/Gem/Version.html) che lo spiega (vedere la sezione "Prevenire la catastrofe della versione"). L'essenza di esso è che consente solo di aumentare l'ultimo numero nel numero di versione (ad es. '~> 1.0.5' consente l'aggiornamento alla versione 1.0.9999, ma mai a 1.1.x). Il meccanismo è per consentire l'aggiornamento delle gemme, ma senza introdurre incompatibilità che potrebbero violare le cose (presuppone che le gemme stiano seguendo la politica "Rational Versioning" che collega i contorni). –
@ethan Ecco un paio di altri link sul sito RubyDocs in merito a "[operatore pessimistico] (http://docs.rubygems.org/read/chapter/16#page74)" (~>) e [versioning razionale] (http : //docs.rubygems.org/read/chapter/7). –