bundle install
'u çalıştırdığınızda, Bundler adlı bir araç kullanıyorsunuz.
Bundler Composer gibi benzer şekilde bağımlılıkları yönetimiyle ilgilenir, ancak bunun yerine proje klasöründeki her şeyi yükleme, sizin taşlar sistem genelinde, tüm proje arasında paylaşılır yükler. Proje klasörünüzde Gemfile'ı kullanarak hangi kitaplıkların gerektirdiğini izler. Böylelikle Bundler'in işini yapmasına izin vermelisiniz, çok iyi ve Rails için standart paket yöneticisidir.
ev sahibi Yakut ve Raylar uygulamalarını destekler (örneğin, Heroku gibi bir PaaS), kesinlikle destek Bundler ve gerekli tüm taşlar kurulacaktır olacak. Kabuk erişimi olmadan ucuz bir paylaşımlı barındırma hakkında konuşuyorsanız, bir Ruby uygulamasını orada dağıtmayacaksınız çünkü gerçek Ruby yorumlayıcısını ve kabuk erişimi gerektiren diğer şeyleri yüklemeniz gerekecek.
sayılı
Güvenmemelisin. Orada bunu nasıl açıklayan this article, ama yüklemeden taşlar küresel aynı makinede diğer projeler içine sızan ve rahatsız edici garip bir duruma neden oldu
sayısız kez hata ayıklamak için geliyor bana
Bu yazının yazarı sadece başına geldi ve Bundler'ın hatalı olduğunu sanmıyorum. Her durumda, bundle exec
(bundle exec rspec
'da olduğu gibi) ile her zaman taş komutlarını eklemelisiniz ve belirtilen soruna asla sahip olmayacaksınız. bundle exec
, bir gemiden bir komutu çalıştırdığınızda, Gemfile'ınızda tanımlı doğru sürümün çağrıldığından emin olursunuz, sisteminizde aynı geminin birkaç sürümü varsa, bu önemlidir.
RVM popüler iken Birkaç yıl önce,
gemsets benzer amacına ulaşmış ama çoğunlukla
rbenv ve Bundler tarafından kaldırılmış var.
Sanırım, "bundle exec" nin gerekli olduğunu ve neden gerekli olduğunu biraz kötü bir şekilde ilettiğini düşünüyorum, bu yüzden insanlar sık sık bağımlılıkların proje klasörüne yüklenmesi gerektiğini düşünüyor. Ayrıca, çoğu diğer paket yöneticileri (besteci, npm, bower, vb.) Bunu yapar, böylece farklı ortak desen de kafa karıştırıcı olabilir. –
Ben noktayı anlamıyorum "cevabında" bundle exec "ile her zaman taş komutlarını eklemelisiniz. – Sithu
@Sithu [bu soru ve cevap] konusuna bakın (http://stackoverflow.com/questions/6588674/what-does-bundle-exec-rake-mean). Kısacası, bir gemden gelen bir komutu çalıştırdığınızda, Gemfile'ınızda tanımlanan doğru sürümün çağrıldığından emin olur. Sistemde yüklü aynı geminin birkaç sürümü varsa önemlidir. Kural olarak, projenizin bağlamında bir komutu her çalıştırdığınızda, 'bundle exec' ile eklemelisiniz. – p4sh4