2011-12-19 21 views
8

Zaten bunun üzerinde bir milyon soru olduğunu biliyorum, ancak bunu alamıyorum.Rails 3.1, JS dosyalarını varlık borusundan hariç tut

JS dosyalarının çoğunu varlık boru hattına dahil etmek istiyorum, ancak birkaçını koşullu olarak yüklemek istiyorum (veya yalnızca belirli sayfalarda). Bunlar büyük, karmaşık dosyalar ve asla, kullanıcıların% 95'i tarafından kullanılmayacak, böylece her kullanıcı için yüklenmesini istemem.

app/assets/javascripts/calendar 

Yani benim apaçık (takvim alt dizini ve dışarıda) sadece üst dizin eklemek için ayarlandı: JS dosyaları Bir set yerleştirilen bir takvim içindir

//= require jquery 
//= require jquery_ujs 
//= require jquery-ui 
//= require_directory . 

My config/ortamları/production.rb:

: görünümünde

# Compress JavaScripts and CSS 
config.assets.compress = true 

# Don't fallback to assets pipeline if a precompiled asset is missed 
config.assets.compile = false 

# Generate digests for assets URLs. 
config.assets.digest = true 

# This following config is left over from previous Rails app, 
# so not sure if it's now unnecessary ... 
# Disable Rails's static asset server 
# In production, Apache or nginx will already do this 
config.serve_static_assets = false 

, el takvim dosyaları dahil etmek Ryan Bates'in nifty_layout kullanıyorum

javascript "calendar/date.js", "calendar/jquery.weekcalendar.js", "calendar/custom.js" 

Hem geliştirme hem de üretim için ön derleme yapmayı denedim. Dokümanlar bunu yapmak zorunda olduğum yerler net değil, ancak prodüksiyona benziyor.

ActionView::Template::Error (calendar/date.js isn't precompiled) 

Ben önderlenmiş istemiyorum: Benim sayfayı çalıştırdığınızda

Ve, bu alın. Elle yüklenmesini istiyorum. (Aslında, oluşturulan ana application.js'den başka bir dosyada önceden derlemek iyi olurdu, ancak bunu nasıl yapacağımı bilmiyorum.)

Çözüm nedir?

Teşekkürler!

cevap

4

Tamam, bunun nasıl çalıştığının farkında değildim, ama ben düşünün Bunu çözdüm.

dosyaları manuel olarak şöyle yapılandırma/ortamlar/production.rb için yüklenecek ekleyin:

config.assets.precompile += %w(calendar/*.js jquery_calendar/*.css) 

Bu sadece application.js ve application.css içine katlanmış, ama görünüşe göre değil düşünce - bunları bireysel dosyalar olarak derler. Eğer geleneksel olarak (bu durumda, nifty_layout kullanarak) gibi

Ardından, dosyaları arayabilirsiniz:

javascript "calendar/date.js", "calendar/jquery.weekcalendar.js", "calendar/custom.js" 
İlgili konular