bundle-update - Taşlarınızı mevcut en son sürümlere güncelleyin
bundle update *gems [--all] [--group=NAME] [--source=NAME] [--local] [--ruby] [--bundler[=VERSION]] [--full-index] [--jobs=JOBS] [--quiet] [--patch|--minor|--major] [--redownload] [--strict] [--conservative]
Gemfile.lock içinde belirtilen önceden yüklenmiş taşları yok sayarak, belirtilen değerli taşları (--all bayrağı kullanılıyorsa tüm değerli taşlar) güncelleyin. Genel olarak, makineler arasında tam olarak aynı taşları ve sürümleri kurmak için package install(1) bundle-install.1.html kullanmalısınız.
Bir mücevherin sürümünü açıkça güncellemek için paket güncelleme'yi kullanırsınız.
Gemfile'de belirtilen tüm taşları güncelleyin.
Yalnızca belirtilen gruptaki taşları güncelleyin. Örneğin, geliştirme grubundaki tüm mücevherleri paket güncelleme -- grup geliştirme ile güncelleyebilirsiniz. Örneğin, Rails gem'i ve test grubundaki tüm gem'leri güncellemek için bundle update Rails --group test'i de arayabilirsiniz.
Gemfile(5) içinde kullanılan bir :git veya :path kaynağının adı. Örneğin, :git bir http://github.com/rails/rails.git kaynağıyla, bundle update --source rails adını verirsiniz.
Mücevherleri uzaktan getirmeye çalışmayın ve bunun yerine mücevher önbelleğini kullanın.
Ruby'nin kilitli sürümünü güncel Ruby sürümüne güncelleyin.
Paketleyicinin kilitli sürümünü çağrılan paketleyici sürümüne güncelleyin.
Tüm mücevherlerin tek dosya dizinini kullanmaya geri dönün.
Paralel olarak çalıştırılacak işlerin sayısını belirtin. Varsayılan, kullanılabilir işlemcilerin sayısıdır.
Başarısız ağ veya git isteklerini sayı kez yeniden deneyin.
Yalnızca uyarıları ve hataları yazdırın.
Her taşı indirmeye zorla.
Yalnızca bir sonraki yama sürümüne güncellemeyi tercih edin.
Yalnızca bir sonraki küçük sürüme güncellemeyi tercih edin.
Bir sonraki ana sürüme güncellemeyi tercih et (varsayılan).
En son --patch | --minör | --büyük.
Paket yükleme muhafazakar güncelleme davranışını kullanın ve dolaylı bağımlılıkların güncellenmesine izin vermeyin.
bundle update --all'ı çalıştırırsanız, paketleyici önceden yüklenmiş değerli taşları yok sayar ve kaynaklarda bulunan tüm değerli taşların en son sürümlerine dayalı olarak tüm bağımlılıkları yeniden çözer.
Aşağıdaki Gemfile(5)'i göz önünde bulundurun:
source "https://rubygems.org"
gem "rails", "3.0.0.rc"
gem "nokogiri"package install(1) bundle-install.1.html dosyasını ilk kez çalıştırdığınızda, paketleyici tüm bağımlılıkları baştan sona çözecek ve ihtiyacınız olanı yükleyecektir:
Fetching gem metadata from https://rubygems.org/.........
Resolving dependencies...
Installing builder 2.1.2
Installing abstract 1.0.0
Installing rack 1.2.8
Using bundler 1.7.6
Installing rake 10.4.0
Installing polyglot 0.3.5
Installing mime-types 1.25.1
Installing i18n 0.4.2
Installing mini_portile 0.6.1
Installing tzinfo 0.3.42
Installing rack-mount 0.6.14
Installing rack-test 0.5.7
Installing treetop 1.4.15
Installing thor 0.14.6
Installing activesupport 3.0.0.rc
Installing erubis 2.6.6
Installing activemodel 3.0.0.rc
Installing arel 0.4.0
Installing mail 2.2.20
Installing activeresource 3.0.0.rc
Installing actionpack 3.0.0.rc
Installing activerecord 3.0.0.rc
Installing actionmailer 3.0.0.rc
Installing railties 3.0.0.rc
Installing rails 3.0.0.rc
Installing nokogiri 1.6.5
Bundle complete! 2 Gemfile dependencies, 26 gems total.
Use `bundle show [gemname]` to see where a bundled gem is installed.Gördüğünüz gibi, Gemfile(5) içinde iki gem olmasına rağmen, uygulamanızın çalışabilmesi için 26 farklı gem'e ihtiyacı var. Bundler, Gemfile.lock'ta yüklediği sürümleri tam olarak hatırlar. package install(1) bundle-install.1.html'yi bir sonraki çalıştırışınızda, paketleyici bağımlılık çözümlemesini atlar ve en son yüklediği taşların aynısını yükler.
Gemfile.lock dosyasını sürüm kontrolünde kontrol ettikten ve onu başka bir makinede klonladıktan sonra, package install(1) bundle-install.1.html çalıştırıldığında, geçen sefer kurduğunuz taşlar yine kurulacaktır. Yeni bir erubis veya mail sürümünün kullandığınız değerli taşları değiştireceği konusunda endişelenmenize gerek yok.
Ancak, zaman zaman, kullanmakta olduğunuz taşları, Gemfile(5) dosyanızdaki taşlarla hâlâ eşleşen en yeni sürümlere güncellemek isteyebilirsiniz.
Bunu yapmak için, Gemfile.lock'u yok sayan bundle update --all komutunu çalıştırın ve tüm bağımlılıkları yeniden çözün. Bu işlemin, bundle update --all'ı en son çalıştırdığınızdan bu yana mücevher yazarlarının piyasaya sürdüğü yeni cevherlerin gereksinimlerine bağlı olarak, 25 cevherden oluşan önemli ölçüde farklı bir setle sonuçlanabileceğini unutmayın.
Bazen, Gemfile(5) içindeki tek bir gem'i güncellemek ve belirttiğiniz diğer gemleri Gemfile.lock içindeki sürümlere kilitli bırakmak istersiniz.
Örneğin, yukarıdaki senaryoda, nokogiri'nin 1.4.4 sürümünü yayınladığını ve Rails'i ve tüm bağımlılıklarını güncellemeden güncellemek istediğinizi düşünün. Bunu yapmak için bundle update nokogiri'yi çalıştırın.
Bundler, nokogiri'yi ve bağımlılıklarından herhangi birini güncelleyecek, ancak Rails ve bağımlılıklarını tek başına bırakacaktır.
Bazen, Gemfile(5) içinde bildirilmiş olan birden çok taş, aynı ikinci düzey bağımlılık tarafından karşılanır. Örneğin, thin ve rack-perftools-profiler durumunu ele alalım.
source "https://rubygems.org"
gem "thin"
gem "rack-perftools-profiler"ince cevher rack >= 1.0'a, rack-perftools-profiler ise rack ~> 1.0'a bağlıdır. Paket kurulumunu çalıştırırsanız şunları elde edersiniz:
Fetching source index for https://rubygems.org/
Installing daemons (1.1.0)
Installing eventmachine (0.12.10) with native extensions
Installing open4 (1.0.1)
Installing perftools.rb (0.4.7) with native extensions
Installing rack (1.2.1)
Installing rack-perftools_profiler (0.0.2)
Installing thin (1.2.7) with native extensions
Using bundler (1.0.0.rc.3)Bu durumda, iki cevherin kendi bağımlılıkları vardır, ancak rafı ortak olarak paylaşırlar. bundle update thin'i çalıştırırsanız, paketleyici, thin'in bağımlılıkları olan daemons, eventmachine ve rack'ı günceller, ancak rack-perftools_profiler'ın bağımlılıkları olan open4 veya perftools.rb'yi güncellemez. Bundle update thin'in rack'ı aynı zamanda bir rack-perftools_profiler bağımlılığı olmasına rağmen güncelleyeceğini unutmayın.
Kısacası, varsayılan olarak, bundle update kullanarak bir gem'i güncellediğinizde, paketleyici, başka bir gem'in bağımlılıkları da dahil olmak üzere o gem'in tüm bağımlılıklarını günceller.
Dolaylı bağımlılıkların güncellenmesini önlemek için, sürüm 1.14'ten önce tek seçenek, kurulum paketindeki(1) bundle-install.1.html KORUYUCU GÜNCELLEME davranışıydı:
Bu senaryoda, Gemfile(5) içinde ince sürümü manuel olarak güncellemek ve ardından package install(1) bundle-install.1.html'i çalıştırmak yalnızca arka plan programı ve eventmachine'i günceller, ancak rafı güncellemez. Daha fazla bilgi için paket kurulumunun(1) bundle-install.1.html KORUYUCU GÜNCELLEME bölümüne bakın.
1.14'ten başlayarak, --conservative seçeneğinin belirtilmesi dolaylı bağımlılıkların güncellenmesini de engelleyecektir.
Sürüm 1.14, gem sürümlerinin nasıl çözümlendiğini etkileyecek 4 yama düzeyinde seçenek sunuyor. Şu seçeneklerden biri kullanılabilir: --patch, --minor veya --major. Daha fazla etki çözümü için --strict eklenebilir.
Yalnızca bir sonraki yama sürümüne güncellemeyi tercih edin.
Yalnızca bir sonraki küçük sürüme güncellemeyi tercih edin.
Bir sonraki ana sürüme güncellemeyi tercih et (varsayılan).
En son --patch | --minör | --büyük.
Bundler, Gemfile veya üst mücevherlerde beyan edilen gereksinimleri karşılamak için hangi sürümlerin kullanılacağına karar verirken, mevcut tüm sürümleri arar, gereksinimi karşılamayan sürümleri filtreler ve ardından varsayılan olarak, onları bu sırayla dikkate alarak en yeniden en eskiye doğru sıralar.
Yama seviyesi seçeneklerinden birinin (ör. --patch) sağlanması, tatmin edici sürümlerin sıralama düzenini değiştirerek Bundler'ın diğer sürümlerden önce mevcut olan en son --patch veya --minor sürümünü dikkate almasına neden olur. Uygun bir bağımlılık grafiği bulmak için gerekirse belirtilen yama seviyesinin dışındaki sürümlerin yine de çözülebileceğini unutmayın.
Örneğin, gem 'foo' 1.0.2'de kilitliyse, Gemfile'de gem gereksinimi tanımlanmamışsa ve 1.0.3, 1.0.4, 1.1.0, 1.1.1, 2.0.0 sürümlerinin tümü mevcutsa, varsayılan tercih sırası (--major) "2.0.0, 1.1.1, 1.1.0, 1.0.4, 1.0" olacaktır. .3, 1.0.2".
--patch seçeneği kullanılırsa tercih sırası "1.0.4, 1.0.3, 1.0.2, 1.1.1, 1.1.0, 2.0.0" olarak değişecektir.
--minor seçeneği kullanılırsa tercih sırası "1.1.1, 1.1.0, 1.0.4, 1.0.3, 1.0.2, 2.0.0" olarak değişecektir.
--strict seçeneğini herhangi bir yama seviyesi seçeneğiyle birleştirmek, yama seviyesi seçeneğinin kapsamı dışındaki tüm sürümleri kaldırarak, o ana kadar hiçbir mücevherin güncellenmemesini sağlar.
Önceki örneğe devam edecek olursak, hem --patch hem de --strict seçenekleri kullanılırsa, çözünürlük için mevcut sürümler "1.0.4, 1.0.3, 1.0.2" olacaktır. --minor ve --strict kullanılırsa "1.1.1, 1.1.0, 1.0.4, 1.0.3, 1.0.2" olur.
Gemfile'de tanımlandığı şekliyle Gem gereksinimleri, hangi sürümlerin mevcut olduğunu belirleyen ilk faktör olmaya devam edecektir. Gemfile'de foo için gem gereksinimi '~> 1.0' ise, bu, --minor ve --strict seçeneklerini sağlamakla aynı şeyi yapacaktır.
Aşağıdaki taş özellikleri göz önüne alındığında:
foo 1.4.3, requires: ~> bar 2.0
foo 1.4.4, requires: ~> bar 2.0
foo 1.4.5, requires: ~> bar 2.1
foo 1.5.0, requires: ~> bar 2.1
foo 1.5.1, requires: ~> bar 3.0
bar with versions 2.0.3, 2.0.4, 2.1.0, 2.1.1, 3.0.0Gem dosyası:
gem 'foo'Gemfile.lock:
foo (1.4.3)
bar (~> 2.0)
bar (2.0.3)Vakalar:
# Command Line Result
------------------------------------------------------------
1 bundle update --patch 'foo 1.4.5', 'bar 2.1.1'
2 bundle update --patch foo 'foo 1.4.5', 'bar 2.1.1'
3 bundle update --minor 'foo 1.5.1', 'bar 3.0.0'
4 bundle update --minor --strict 'foo 1.5.0', 'bar 2.1.1'
5 bundle update --patch --strict 'foo 1.4.4', 'bar 2.0.4'1. durumda, bar 2.1.1'e yükseltilir, foo 1.4.5'ten gelen bağımlılık gerektirdiğinden küçük bir sürüm artışı.
2. durumda, yalnızca foo'nun kilidinin açılması istenir, ancak Gemfile'de beyan edilmiş bir bağımlılık olmadığı için bar'ın da hareket etmesine izin verilir.
3. durumda, bar tam bir majör sürüm yükselir, çünkü şimdi foo için küçük bir artış tercih edilir ve 1.5.1'e gittiğinde, 3.0.0 bar gerektirir.
4. durumda, alt sürüme kadar foo tercih edilir, ancak --strict bayrağı, büyük bir artış olduğu için bar 3.0.0'ı dikkate almadığından 1.5.1 çalışmaz.
5. durumda, hem foo hem de bar, --strict bayrağı nedeniyle dikkate alınmayan küçük veya büyük artışlara sahiptir, bu nedenle hareket edebilecekleri en fazla 1.4.4 ve 2.0.4'e kadardır.
Genel olarak, paketleyici ile yönetilen bir uygulama ile çalışırken aşağıdaki iş akışını kullanmalısınız:
Gemfile(5)'inizi ilk kez oluşturduktan sonra çalıştırın.
bundle install
Ortaya çıkan Gemfile.lock dosyasını sürüm kontrolünde kontrol edin
git add Gemfile.lock
Bu depoyu başka bir geliştirme makinesinde kontrol ederken, şunu çalıştırın:
bundle install
Bir konuşlandırma makinesinde bu depoyu kontrol ederken şunu çalıştırın:
bundle install --deployment
Gemfile(5)'i yeni veya güncelleme bağımlılığını yansıtacak şekilde değiştirdikten sonra, çalıştırın
bundle install
Güncellenmiş Gemfile.lock'u sürüm kontrolünde kontrol ettiğinizden emin olun
git add Gemfile.lock
package install(1) bundle-install.1.html bir çakışma bildirirse, Gemfile(5) içinde değiştirdiğiniz belirli taşları manuel olarak güncelleyin.
bundle update rails thin
Tüm taşları, Gemfile(5)'te listelenen taşlarla hâlâ eşleşen en son olası sürümlere güncellemek istiyorsanız, şunu çalıştırın:
bundle update --all