Zauważyłem, że na rubygems.org wiele klejnotów sugeruje, aby określić je w wersji głównej, a nie w dokładnej. Na przykład ...Czy muszę podać dokładne wersje w moim Gemfile?
gem "haml-rails", "~> 0.3.4" # "$ bundle install" will acquire the
# latest version before 1.0.
Jednak na podstawie Bundler docs to brzmiało dla mnie jak byłoby lepiej do paznokci w dół dokładnie wersję takiego ...
gem "haml-rails", "0.3.4"
Więc masz swój klejnot w szynach i wszystkie jego zależności nie będą płynęły do przodu. Jeśli wypróbujesz projekt na innej maszynie kilka tygodni później i uruchomisz $ bundle install
, będziesz miał dokładnie te same wersje wszystkiego, co podałeś.
Zauważyłem, że zwolnienia pointów łamią rzeczy, a ja myślałem, że częścią całego pomysłu Bundlera jest "Bundle.lock
" wszystkie twoje wersje klejnotów.
Ale na rubygems.org często używają "~>", więc może czegoś brakuje?
Wszelkie wyjaśnienia byłyby bardzo pomocne dla mnie w zrozumieniu zarządzania Bundlerami i klejnotami.
OK, więc klejnoty pozostają w ustalonych wersjach nagranych w Gemfile.lock. Jaki jest cel dodawania "~>"? Jak to jest korzystne? – Ethan
@ethan RubyGems wyjaśnia [dokument] (http://rubygems.rubyforge.org/rubygems-update/Gem/Version.html) (patrz sekcja "Zapobieganie katastrofie wersji"). Istotą jest to, że pozwala ona tylko na zwiększenie całkowitej liczby całkowitej w numerze wersji (np. "~> 1.0.5" pozwala na aktualizację do wersji 1.0.9999, ale nigdy do wersji 1.1.x). Mechanizm ten umożliwia aktualizowanie klejnotów, ale bez wprowadzania niezgodności, które mogą powodować błędy (zakłada się, że klejnoty przestrzegają zasad "Rational Versioning", które łączą kontury). –
@ethan Oto kilka dodatkowych linków na stronie RubyDocs na temat "[pesymistycznego operatora] (http://docs.rubygems.org/read/chapter/16#page74)" (~>) i [racjonalnej wersji] (http : //docs.rubygems.org/read/chapter/7). –