2012-12-12 104 views
9

पर फास्ट कनवर्ज़न एचटीएमएल टेम्पलेट मैं खुद को वही काम कर रहा हूं, डिजाइनरों का उपयोग करके अच्छा यूई बनाने के लिए एचटीएमएल/सीएसएस को एसेट पाइपलाइन में विभाजित करने और पथ और सीएसएस + जेएस टैग को ढूंढने और बदलने के लिए ; संपत्ति पथ का उपयोग करने के लिए सब कुछ अद्यतन कर रहा है। क्या ऐसा कुछ है जो स्वचालित रूप से करता है?रेल एसेट ईआरबी/एसएएस लेआउट

+1

क्या आप विस्तारित कर सकते हैं? नई संपत्ति क्यों पथ? कैशिंग तोड़ने के लिए? –

उत्तर

5

मेरे लिए, यह स्थिति sed के लिए जोर से कॉल करती है। यदि आप लिनक्स, मैक ओएस एक्स, या अन्य * निक्स चला रहे हैं, तो पढ़ें। (यदि आपका देव पर्यावरण विंडोज है लेकिन आप * निक्स सर्वर पर तैनात कर रहे हैं जहां आप पोस्ट-तैनाती स्क्रिप्ट सेट अप कर सकते हैं, तो यह दृष्टिकोण अभी भी काम करेगा।)

तो आपके डिजाइनर के पास स्थानीय निर्देशिकाओं में आपकी संपत्तियों तक पहुंच है, और यह <img src="images/logo.png"> जैसे टैग जेनरेट करेगा। लेकिन, तैनाती में आप या तो <img src="<%= asset_path 'logo.png' %>"> जैसे ईआरबी कॉल के साथ उन पथों को प्रतिस्थापित करना चाहते हैं, या फिर उन्हें <img src="http://assets.mysite.com/logo.png"> जैसे टैग के साथ कुछ बाहरी सीडीएन पर इंगित करने के लिए बदलें, है ना?

ठीक है, किसी भी मामले में, sed आपका दोस्त है! सेड (अन्य चीजों के साथ) एक फ़ाइल के माध्यम से जा सकते हैं और उन्हें जगह में regex प्रतिस्थापन लागू कर सकते हैं। ERB कॉल स्थिति में (यह मानते हुए आप पहले से ही अपनी फ़ाइल का नाम बदला गया है एक ERB विस्तार करने के लिए), तो आप इस आदेश चला जाएगा:

$ sed -i 's/\(<img[^>]*src="\)images/\([^"]+\)\("[^>*]>\)/\1<%= asset_path \'\2\' %>\3/g' somefile.html.erb 

इस आदेश चलाने के बाद, somefile.html.erb बजाय asset_path का उपयोग किया जाएगा मैन्युअल रूप से निर्दिष्ट छवि पथ। बॉब अपने चाचा

$ sed -i 's/\(<img[^>]*src="\)images/\([^"]+\)\("[^>*]>\)/\1http:\/\/assets.mysite.com\/\2\3/g' somefile.html 

और:

दूसरे मामले में, जहाँ आप सिर्फ एक और पथ से या किसी अन्य सर्वर पर छवि शायद प्रदान कर रहे हैं, समान है!

एक चीज जो इन आदेशों के बारे में परेशान है वह है कि आपको उन्हें प्रत्येक फ़ाइल पर चलाना होगा। खैर, बचाव के लिए आने के लिए एक और यूनिक्स उपयोगिता के लिए समय: ढूंढें। अब, प्राचीन लैटिन की तरह ऊपर दिखता है की अगर ज्यादा आप के लिए

$ find dir/with/html -type f -name '*.html.erb' -exec sed 's/foo/bar/g' {} \; 

(और आप प्राचीन लैटिन में धाराप्रवाह नहीं कर रहे हैं), तो आपको ': यह उपयोगिता फाइलों का एक समूह पर एक स्क्रिप्ट एक निर्देशिका वृक्ष में चला सकते हैं आप नियमित अभिव्यक्तियों के बारे में अधिक जानना चाहते हैं, ताकि आप उपरोक्त आदेशों को विभिन्न प्रकार के परिवर्तनों को करने के लिए ट्विक कर सकें। This sed और नियमित अभिव्यक्तियों का उपयोग करने के लिए एक बहुत अच्छी मार्गदर्शिका है जो बहुत पहले ज्ञान नहीं मानती है।

एक बार जब आप यह है कि सही काम करता आदेशों का एक सेट है, उन्हें एक खोल स्क्रिप्ट फ़ाइल में सहेजें। फिर, जब भी आपको इसकी आवश्यकता हो, उस फ़ाइल को चलाएं, और यह आपके लिए सभी कष्टप्रद काम करेगा! यही कारण है कि इन सभी घटाने वाले आदेशों को सीखना; वे एक अच्छा जीयूआई & डायलॉग को प्रतिस्थापित करते हुए अधिक काम कर रहे हैं, लेकिन वे क्या करते हैं इसकी लचीलापन और स्क्रिप्ट में उन्हें बंडल करने की क्षमता आपको लंबे समय तक समय और परेशानी बचाती है।

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

  • कोई संबंधित समस्या नहीं^_^