2011-12-19 21 views
8

मुझे पता है कि इस पर पहले से ही एक लाख प्रश्न हैं, लेकिन मुझे यह नहीं मिल रहा है।रेल 3.1, संपत्ति पाइपलाइन से जेएस फाइलों को बाहर करें

मैं अपनी अधिकांश जेएस फाइलों को संपत्ति पाइपलाइन में शामिल करना चाहता हूं, लेकिन मेरे पास कुछ सशर्त रूप से लोड करना चाहते हैं (या केवल कुछ पृष्ठों पर)। ये बड़ी, जटिल फाइलें हैं और कभी भी 95% उपयोगकर्ताओं द्वारा कभी भी उपयोग नहीं की जाएगी, इसलिए मैं उन्हें प्रत्येक उपयोगकर्ता के लिए लोड नहीं करना चाहूंगा।

app/assets/javascripts/calendar 

तो मेरी प्रकट केवल शीर्ष निर्देशिका में शामिल हैं (और कैलेंडर उपनिर्देशिका को बाहर) करने के लिए स्थापित किया गया है:: जे एस फ़ाइलें का एक सेट एक कैलेंडर, में रखा के लिए है

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

मेरे config/वातावरण/production.rb:

# 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 

ध्यान में रखते हुए मैं रयान बेट्स 'nifty_layout उपयोग कर रहा हूँ मैन्युअल रूप से कैलेंडर फ़ाइलों को शामिल करने:

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

मैंने विकास और उत्पादन दोनों में प्रीकंपलिंग करने की कोशिश की है - दस्तावेज़ स्पष्ट नहीं हैं जहां मुझे ऐसा करना है, लेकिन यह उत्पादन की तरह दिखता है।

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

मैं इसे precompiled नहीं करना चाहती:

और जब मैं पेज चलाने के लिए, मैं इस मिलता है। मैं इसे मैन्युअल रूप से लोड करना चाहता हूं। (असल में, मुख्य अनुप्रयोग.जेएस के अलावा किसी अन्य फ़ाइल में प्रीकंपाइल करना ठीक होगा, लेकिन मुझे नहीं पता कि यह कैसे करना है।)

समाधान क्या है?

धन्यवाद!

उत्तर

4

ठीक है, मुझे नहीं पता था कि यह कैसे काम करता है, लेकिन मैं सोचता हूं मैंने इसे समझ लिया।

जोड़े फ़ाइलों को मैन्युअल रूप से की तरह config/वातावरण/production.rb को लोड करने के लिए:

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

मैं इस बस उन्हें application.js और application.css में मुड़ा हुआ, लेकिन जाहिरा तौर पर नहीं सोचा था कि - यह उन्हें व्यक्तिगत फाइलों के रूप में संकलित करता है।

उसके बाद, आप फ़ाइलों के रूप में आप पारंपरिक रूप से होता है (इस मामले में, nifty_layout का प्रयोग करके) कॉल कर सकते हैं:

javascript "calendar/date.js", "calendar/jquery.weekcalendar.js", "calendar/custom.js" 
संबंधित मुद्दे