2012-08-31 28 views
6

Github'dan çıkarılmış bir uygulamayı çalıştırmaya çalışıyorum.Mücevherleri Gemfile.lock dosyasından nasıl yüklersiniz?

Gemfile'dan gerekli taşları yüklemek için bundle install'u çalıştırıyorum. Ancak uygulamayı çalıştırırken, bir hata mesajı bana yüklü olan mücevherlerin yanlış sürüm olduğunu söylüyor.

Gemfile.lock incelemede, sürümlerin yüklü olan mücevherlerden daha eski olduğunu unutmayın. (diğer bir deyişle, yüklü olan daha yeni sürümlerim var ve uygulama eski taşlar gerektiriyor.)

Tüm mücevherleri Gemfile.lock dosyasında açıklanan sürümlere göre kurmanın hızlı bir yolu var mı? Alternatif olarak, bu dosyayı yok saymak için bir yöntem var mı?

Gemfile:

source 'http://rubygems.org' 
    gem 'rails', "3.0.9" 
    gem "sass" 
    .. 

Gemfile.lock: Yukarıdaki örnekte

sass (3.1.1) 
.. 

, sos uygulamasını yüklü olsa bile, özel bir versiyon 3.1.1 gerektirir. Bazı özel taş sürümü çekti sürece

+0

Bundler her zaman sürümlerini 'Gemfile.lock' dosyasında yüklemelidir, yani amacı budur. Sisteminizde yüklü olan bu mücevherlerin hiç bir versiyonu yok mu? – janders223

+0

Uygulama tarafından belirtilenden daha yeni takılmış taşlar var. Bir paket çalıştırdığımda, mevcut en yeni mücevher sürümü yüklenir. – dmuk

+3

Sadece kilit dosyasını silin ve paketi tekrar yapın. – emrahbasman

cevap

6

geçerli bir Gemfile.lock dosyası ile bundle execute rails server

+1

+1, sunucuyu bundler'dan çalıştırmanız ve böylece doğru mücevherleri kullanmanız gerekir. –

9

ile web sunucusu çalıştıran emin olun, yalnız bundle install, yeterli olmalıdır. Bu durumda, şu anda mevcut olan alternatif bir mücevher sürümünü aramanız gerekecektir (genellikle bundle update name_of_yanked_gem yeterli olur). sass 3.1.1 Hakkında

, uygulama Gemfile.lock Gemfile belirtilen genel sürümü sınırlamalara göre güncellenmiş/üretilen en son ne zaman belli versiyonu, daha ziyade, bu yeni sürümü olasılıkla mevcut olduğunu gerektirdiğini çok değildir. Listelediğiniz gibi, sass için belirtilen bir sürüm aralığı yoktur, ancak diğer taşlar, bağımlı olarak sass varsa daha fazla kısıtlama getirebilir.

Kazanan o uygulama ile hala kullanılabilir olduğu bilinen son ne taş versiyonlarını belirterek olacak normal şartlar altında olarak Gemfile.lock iyi bir fikir değildir görmezden.

+0

Paket yüklemesinin yeterli olduğundan emin misiniz? Örneğin, aynı gemin birden çok sürümü yüklüyse (çoğu zaman olduğu gibi) ne olur? Ben 'bundler execute' için ne olduğunu sanıyordum. – Dty

+0

"Gemfile.lock" üretildiyse de, genel kısıtlamaları çözdükten sonra, belirtilen her mücevher için yalnızca bir sürüm içerecektir. 'bundle install' kurulum içindir ve' bundle exec' yürütme içindir. – prusswan

+0

Ah tamam, sanırım askerin asıl sorusunu "nasıl kurmalıyım?" Onun gerçek probleminin ne olduğunu düşündüğümü cevaplıyorum. – Dty

2

bu deneyin .. Yukarıdaki dağıtım seçeneği ile

bundle install --deployment 

, paket sonra Gemfile.lock okur.

Dahası, taşlar paket dizini oto oluşturulan olmak üzere dizin satıcı/demetine yüklenir.

Ayrıca, yeni dizin .bundle raylar kök dizin altında doğrudan yaratılır

ve

BUNDLE_FROZEN: '1' 
BUNDLE_PATH: vendor/bundle 
BUNDLE_DISABLE_SHARED_GEMS: '1' 

sizin için yukarıdaki eserler Umut ..., içeriği şu şekildedir yapılandırma adlı bir dosya vardır.

İlgili konular