आज मैंने अपने अपग्रेड किए गए रेल 2.3.x -> 3.1 (आरसी 4) ऐप को हमारे परीक्षण पर्यावरण में तैनात करने के बाद, हमारी सभी स्टाइलशीट्स और जावास्क्रिप्ट फाइलें 404 त्रुटियां लौट रही थीं। हमने रेक संपत्तियों को जोड़ा था: हमारी पोस्ट-तैनाती स्क्रिप्ट के लिए प्रीकंपाइल कार्य और यह निर्धारित करने में कुछ समय लगा कि संपत्ति फ़ोल्डर में पूर्व-संकलित फाइलें क्यों नहीं थीं।रेल 3.1 संपत्ति पाइपलाइन - सार्वजनिक/परिसंपत्तियों से लापता फाइलें - यह डिफ़ॉल्ट क्यों नहीं है?
अंत में, फ़ाइलों को संकलित नहीं किया जा रहा था क्योंकि स्पष्ट रूप से केवल application.css और application.js (+ गैर JS/CSS फ़ाइलें) डिफ़ॉल्ट रूप से संसाधित होते हैं।
config.assets.precompile += %w(*.js *.css)
प्रश्न:: क्यों यह डिफ़ॉल्ट नहीं है
हम इस प्रकार निम्नलिखित विन्यास मान बदलने के लिए की जरूरत है?
मुझे उम्मीद थी कि एक मेनिफेस्ट फ़ाइल के रूप में प्रक्रिया करने के लिए आवश्यक कुछ भी सार्वजनिक/संपत्ति में कॉपी नहीं होगा। संपत्ति पाइपलाइन पर मैंने जो कुछ पढ़ा है वह अनिवार्य रूप से "ऐप/संपत्तियों में अपनी संपत्तियों को चिपकाता है, मैनिफेस्ट फाइलों को कॉन्फ़िगर करता है, और इसे केवल काम करना चाहिए"। संपत्तियों के बाद से: प्रीकंपाइल कार्य ने जो कुछ भी किया था, उसके बारे में कोई जानकारी नहीं दी, यह निर्धारित करने में कुछ समय लगा कि यह उन फ़ाइलों को नहीं देख रहा था जो हमने सोचा था।
क्या कोई कारण है कि यह प्रीकंपाइल कॉन्फ़िगरेशन के लिए एक अच्छा मूल्य क्यों नहीं होगा?
धन्यवाद!
धन्यवाद, क्रिस, उत्तर के लिए पोस्ट अपडेट किया गया। मुझे लगता है कि यह दक्षता के लिए HTTP अनुरोधों को कम करने के लिए समझ में आता है, लेकिन मुझे लगता है कि अधिकांश अनुप्रयोगों में उनके सीएसएस को कम से कम आंतरिक/बाहरी स्टाइलशीट और मॉड्यूलर जावास्क्रिप्ट फाइलों में विभाजित किया जाता है। यह रेलवे ढांचे के बाकी हिस्सों से संबंधित तरीके से वास्तविक बदलाव की तरह लगता है, लेकिन डिफ़ॉल्ट पर आधारित, यह निश्चित रूप से प्रकट होता है कि यह सोच रहा होगा। – shedd
ठीक है, कोई निश्चित रूप से मॉड्यूलर में अपनी फ़ाइलों को काटना चाहता है। विचार यह है कि application.js और application.css में "शामिल हैं" जो उन निर्देशिकाओं में सभी विशिष्ट जावास्क्रिप्ट और सीएसएस में खींचते हैं (यदि आप उन फ़ाइलों को देखते हैं, तो आपको एक 'requ_tree' निर्देश मिलेगा, जो खींचता है उस निर्देशिका में सबकुछ और उसके सभी बच्चे)। –
अधिकांश रेल ऐप्स में वास्तव में सीएसएस को विभिन्न स्टाइलशीट में विभाजित नहीं किया जाता है - कम से कम ग्राहक को वितरित किया जाता है। पृथक स्रोत सीएसएस (और जेएस) को संपत्ति पाइपलाइन द्वारा एक समग्र application.css (या .js) में संकलित किया जाता है। फिर भी, मैं आपके साथ सहमत हूं कि रेल डिफॉल्ट क्या होना चाहिए - अगर (* .js * .css) डिफ़ॉल्ट थे, तो यह अभी भी ठीक काम करेगा या इसे करने का 'सुझाया गया' तरीका होगा, लेकिन यह भी काम करेगा आप क्या करने की कोशिश कर रहे थे। मुझे लगता है कि रेल के पहले संस्करण वास्तव में काम करते थे जैसा आपने सुझाव दिया था, लेकिन उन्होंने इसे हाल ही में बदल दिया, शायद अच्छे कारणों से हम सोच नहीं रहे हैं। – jrochkind