2011-09-02 10 views
48

मैं रेल 3.1 चाहता हूं कि प्रीकंपिलेशन के लिए मेरी अधिक संपत्तियां चुनें। विशेष रूप से, फ़ाइलों को संकलित करने के लिए डिफ़ॉल्ट matcher vendor/assets/javascripts से .js फ़ाइलों को नहीं जोड़ता है। मैं सिर्फ config.assets.precompile सूची में संपत्ति जोड़ सकता हूं, लेकिन यह परेशान लगता है। मैं उन्हें application.js मेनिफेस्ट में संदर्भित नहीं करना चाहता, क्योंकि मैं नहीं चाहता कि वे सभी पृष्ठों में शामिल हों।रेल 3.1 संपत्ति प्रीकंपिलेशन - सभी जावास्क्रिप्ट फ़ाइलों को शामिल करें

सारांश में, किसी भी तरह से अनुरोध करने के लिए, लेकिन उन्हें सभी पृष्ठों में शामिल किए बिना कि vendor/assets/javascripts में मिले सभी .js फ़ाइलों rake assets:precompile द्वारा precompiled हो सकते हैं?

config.assets.precompile << '*.js' 

उत्तर

69

config.assets.precompile नियमित अभिव्यक्ति और वाइल्डकार्ड मिलान स्वीकार करता है तो सभी js फ़ाइलों संकलित हो यह सुनिश्चित करने के नाम से प्रत्येक निर्दिष्ट किए बिना, कुछ इस तरह चाल करना चाहिए

config.assets.precompile << Proc.new { |path| 
    if path =~ /\.(css|js)\z/ 
    full_path = Rails.application.assets.resolve(path).to_path 
    app_assets_path = Rails.root.join('app', 'assets').to_path 
    vendor_assets_path = Rails.root.join('vendor', 'assets').to_path 

    if ((full_path.starts_with? app_assets_path) || (full_path.starts_with? vendor_assets_path)) && (!path.starts_with? '_') 
     puts "\t" + full_path.slice(Rails.root.to_path.size..-1) 
     true 
    else 
     false 
    end 
    else 
    false 
    end 
} 
+0

मैं यहाँ एक छोटे से Daft होने के लिए माफी माँगता हूँ, लेकिन आप एक जोड़ने का एक उदाहरण दिखा सकता है सभी सादा जेएस और सीएसएस जोड़ने के लिए एक regexp लेकिन सभी कॉफी या एसएसएस फाइलें नहीं? मैं एक लिखने की कोशिश कर रहा हूं और यह काम नहीं कर रहा है ... – Andrew

+20

शायद आप प्रीकंपाइल में पहले से क्या ओवरराइट करना चाहते हैं: 'config.assets.precompile = ['* .js', '* .css']' । – pat

+1

हालांकि आप शायद अपनी छवियों के लिए कुछ भी जोड़ना चाहते हैं। – pat

0
# Precompile *all* assets, except those that start with underscore 
config.assets.precompile << /(^[^_\/]|\/[^_])[^\/]*$/ 
(_ से शुरू) और यहाँ मेरी संस्करण है, जो/ऐप और/विक्रेता partials को छोड़कर से सभी परिसंपत्तियों लेता है

पूर्ण स्पष्टीकरण के लिए 55minutes Blog का संदर्भ लें।

यह किसी भी संपत्ति, precompile होगा न सिर्फ जावास्क्रिप्ट (.js, .coffee, .swf, .css, .scss)

+0

यह बहुत अच्छा है। क्या कोई कारण है कि मैं * सभी संपत्तियों को प्रीकंपाइल नहीं करना चाहता हूं? – AlexChaffee

+0

@AlexChaffee यदि आप SASS की तरह कुछ उपयोग कर रहे हैं या संपत्तियों के 'बंडल' तैयार करने के लिए टिप्पणियों की आवश्यकता है। –

संबंधित मुद्दे

 संबंधित मुद्दे