raylar temiz paket


88

Bir paketi güncelledikten sonra, o mücevherin daha yeni bir sürümü kurulduğundan beri, eski olabilecek bazı mücevherleriniz olacak. bundleYürütülebilir ie altında böyle bir komut yoktur bundle clean. Bu eskimiş mücevherlerden nasıl kurtuluruz?

Bu, raylar uygulamamdaki bilgi boyutunu azaltma girişimidir.

Yanıtlar:


133

Bundler 1.1 veya sonraki bir sürümünü kullanıyorsanız bundle clean, hayal ettiğiniz gibi kullanabilirsiniz. bundle install --pathKullanıyorsanız bu gereksizdir (Bundler --path ile belirttiğiniz konumu yönetir, bu nedenle eski mücevherleri kaldırma sorumluluğunu üstlenir), ancak mücevherleri sistem mücevherleri olarak yüklemek için Bundler'ı kullandıysanız, sistem mücevherlerini bundle clean --forcesilmez. Gemfile'ınız tarafından gereklidir. Kör edici bir şekilde bariz uyarı: Gemfile'ınızda olmayan sistem mücevherlerine dayanan başka uygulamalarınız varsa bunu yapmayın!

Pat Shaughnessy'nin iyi bir açıklaması bundle cleanve paket 1.1'deki diğer yeni eklemeler var .


30
Rvm kullananlar için, bunun bundle clean --forceküresel mücevherlerinize değil, yalnızca mevcut mücevher setinizdekilere değdiğini unutmayın. Böylece bundle clean --forceaynı sonucu verir ve daha hızlıdır ve rvm gemset emptyardından gelir bundle install.
Gabe Kopley

19
SORUMLULUK REDDİ: "Bundle clean --force", dikkatli olmazsanız çok sayıda mücevheri patlatabilir. Bu cevabın ilk satırı olmalı ... özellikle de çok fazla oy aldığından. DİKKATLİ OL!
jerrylroberts

36

RVM kullanıyorsanız rvm gemset empty, mevcut mücevher seti için kullanabilirsiniz - bu komut mevcut mücevher setine takılı tüm mücevherleri kaldıracaktır (mücevher setinin kendisi yerinde kalacaktır). Daha sonra bundle installmücevherlerin gerçek sürümlerini kurmak için çalıştırın . Ayrıca komisyon, paketleyici vb. Gibi genel taşları silmediğinizden emin olun rvm gemset empty(eğer durum buysa, gem installöncesinde manuel olarak kurun bundle install).


22

RVM kullanıyorsanız, değerli taşlarınızı mücevher setlerine takabilirsiniz . Bu şekilde, tam bir temizleme gerçekleştirmek istediğinizde, mücevher setini basitçe kaldırabilirsiniz, bu da içinde takılı olan tüm mücevherleri kaldırır. Diğer seçeneğiniz, kullanılmayan mücevherlerinizi kaldırmak ve bundle installkomutunuzu yeniden çalıştırmaktır .

Paketleyicinin proje başına proje gem sürüm oluşturma aracı olması amaçlandığından, bir bundle cleankomut sağlamaz . Bunu yapmak, arzu edilmeyen diğer projelerle ilişkili mücevherleri de kaldırma olasılığı anlamına gelir. Bu, paketleyicinin muhtemelen gem dizininizi yönetmek için kullanılacak yanlış araç olduğu anlamına gelir. Kişisel tavsiyem, mücevherlerinizi belirli projelerde veya yakut sürümlerinde sandbox yapmak için RVM mücevher setlerini kullanmak olacaktır.


41
Mücevher setini kaldırmanıza gerek yok, sadece 'rvm gemset empty gemset_name' yazıp ardından 'bundle install' komutunu tekrar çalıştırabilirsiniz.
JAG

Harika açıklama. Paketleyici hakkında bunu bilmek yardımcı olur. Teşekkürler.
Volte

9
bundle clean --force işi yapacak
sailor

rvm ile, "paket yüklemesi" mücevherleri yeniden indirmeyi reddederse .rvm / gems / ruby-xxxxxx / belirtimler klasörünü silin.
barbacan

@JAG sana gerektiğini eklersiniz 'taş paketleyici install' arama yapabilmek için gemset temizledikten sonra yüklemek demeti
Maleta

13

Dürüst olmak gerekirse, paketleyici döngüsel bağımlılıklarla ilgili sorunlar yaşadım ve gitmenin en iyi yolu rm -rf .bundle. Kendinizi baş ağrısından kurtarın ve sadece çekici kullanın.


1
Bunu, beni "- dağıtımsız paket yüklemeyi çağırmalısınız" diye rahatsız etmeyi bırakması için yapmak zorundaydım. Teşekkürler
Kevin

2
Fikir için teşekkürler. Yine de benim için daha büyük bir çekiç kullanmak yardımcı oldu. rvm implode --forceve sonra rvm'yi yeniden yükleyin
Ryan

1

İçine değerli taşlar taktığınızı varsayıyorum vendor/bundle? Öyleyse, neden tüm mücevherleri silip temizlemiyorsunuz bundle install?


satıcı dizinim yalnızca varlıkları ve kurulu eklentileri izler. I'm on Rails 3.1
iGbanam

Öyleyse, dağıtıma kopyalanmazlarsa kullanılmayan mücevherleri kaldırmanın nedeni nedir? O kadar fazla yer kaplamazlar.
Leonid Shevtsov

bu raylar uygulamasını bir intranete yerleştiriyorum; Yani dosyaları ve çevreyi yerel olarak idare ediyorum. Bunun için kullanabileceğim herhangi bir çözüm biliyorsanız, lütfen paylaşın.
iGbanam


0

Sadece eski mücevherleri Gemfile'ınızdan kaldırın. Heroku hakkında konuşuyorsanız (bundan bahsetmediniz), o zaman bilgi her yeni sürümde sadece o dosyanın mevcut içeriği kullanılarak derlenir.


bu heroku için gerekli değildir. Raylar uygulamasının boyutunu küçültmek istiyorum.
iGbanam

0

Sadece, eski mücevherleri temizlemek ve paketten sonra baskı uyarılarını kaldırmak için çalıştırın.

bundle clean --force

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.