2012-07-11 18 views
7

एक विशिष्ट सेटअप के कारण, मैं संकलित स्टाइलशीट को दो फाइलों में विभाजित करना चाहता हूं। ऐसा इसलिए है क्योंकि जावा अनुप्रयोग के लिए सीएसएस की एक आवश्यकता है जो सीएसएस को पार्स कर सकती है, लेकिन यह थोड़ी छोटी है और कुछ सीएसएस- (हैक) -सिंटाक्स को संभाल नहीं सकती है। क्योंकि मैं इस जावा एप्लिकेशन को संशोधित करने में असमर्थ हूं, मैं इसे केवल उस सीएसएस को खिलाना चाहता हूं जिसकी आवश्यकता है और जिसमें से मैं यह सुनिश्चित कर सकता हूं कि यह सही है।रेल संपत्ति संपत्ति pipleline: एकाधिक स्टाइलशीट संकलित

तो, आम तौर पर संपत्ति पाइपलाइन केवल एक '/assets/application-[..].css' फ़ाइल का उत्पादन करेगी। यह मेरे द्वारा किए गए फ़ाइल चयन के आधार पर, इसे '/assets/custom-[..].css' भी उत्पन्न करने देगा। यह अभी भी पूर्व संकलित किया जा सकता है।

क्या ऐसा करने का कोई तरीका है? हालांकि मुझे लगता है कि यह आदर्श सेटअप नहीं है ..

उत्तर

12

अतिरिक्त फ़ाइलों के बारे में रेलों को बताने के लिए जिन्हें आप precompiled करना चाहते हैं, आप उन्हें config.assets.precompile सेटिंग में जोड़ सकते हैं।

config.assets.precompile += ["other_application.css"] 

आप केवल अपने HTML में application.css देखते हैं क्योंकि यह है कि आप

<%= stylesheet_link_tag "application" %> 

शामिल कर रहे हैं केवल फ़ाइल है कि आपको अपनी apps/assets/stylesheets निर्देशिका में कुछ custom.css.scss, यह सिर्फ application.css तरह संकलित किया जाएगा है।

उदाहरण के लिए, मैं

- _common.css.scss 
- application.css.erb.scss 
- other_application.css.erb.scss 
app/assets/stylesheets में

हो सकता है। गैर आंशिक फ़ाइलों के शीर्ष में मैं

@import "common"; 

_common.css.scss शामिल करने के लिए रखा जाएगा। अब मैं एक लेआउट में एक दूसरे से स्वतंत्र स्टाइलशीट का संदर्भ दे सकता हूं।

<%= stylesheet_link_tag "application" %> 
# or 
<%= stylesheet_link_tag "other_application" %> 
+0

आपके उत्तर के लिए धन्यवाद, लेकिन दुर्भाग्य से मैं इसे काम नहीं कर सकता। जब मैं _common.css.scss फ़ाइल/ऐप/संपत्ति/स्टाइलशीट में फ़ाइल शामिल करता हूं, तो यह संकलित फ़ाइल के रूप में प्रकट नहीं होता है (मैं फ़ाइलों को ब्राउज़ करने के लिए हेरोकू और हेरोकू कंसोल का उपयोग करता हूं)। साथ ही, केवल application.css को एक मेनिफेस्ट फ़ाइल के रूप में माना जाता है। other_application.css संकलित नहीं होता है, भले ही मैं इसे styleheet_link_tag का उपयोग कर संदर्भित करता हूं। --update-- अन्य_एपप्लिकेशंस सीएसएस उपलब्ध कराने के लिए मुझे config.assets.precompile + =% w (other_application.css) में उत्पादन करने की आवश्यकता है। आरबी – Roemer

+0

धन्यवाद, मैंने अपना जवाब अपडेट कर दिया है। मैंने अपने एप्लिकेशन कोड को दोबारा जांच लिया और महसूस किया कि मेरे पास 'config.assets.precompile' सेट है जो एक ग्लोब के साथ सेट है जो 'ऐप/एसेट्स/स्टाइलशीट्स' से सभी फाइलों को पकड़ता है जो '_' के साथ उपसर्ग नहीं है। गलतफहमी के लिए खेद है; मैंने अपने उत्तर में जो कहा था वह मूल रूप से मेरे अनुप्रयोगों के लिए सच है :) – deefour

+0

यह भी ध्यान देने योग्य है कि, इसी एप्लिकेशन को आपकी जेएस फाइलों के लिए उपयोग किया जाता है, ताकि 'application.js' जैसी अतिरिक्त फाइलें प्रीकंपाइल हो जाएं – deefour

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