2015-01-04 4 views
12

कुछ (एक प्रारंभकर्ता में) की तरह:रेल में किसी भी संपत्ति प्रीकंपाइल से पहले मैं कस्टम कोड कैसे चला सकता हूं?

Sprockets.before_precompile do 
    # some custom stuff that preps or autogenerates some asset files 
    # that should then be considered in the asset pipeline as if they were checked in 
end 

विशेष रूप से, मैं कुछ विशेष preprocessors के साथ कुछ जावास्क्रिप्ट समूहबद्ध करने का घूंट काम चलाना चाहते हैं, और मैं अपने gulpfile पुनर्लेखन नहीं संपत्ति प्राप्त करने के लिए चाहते हैं पाइपलाइन सबकुछ संभालने के लिए ... और मैं यह भी चाहता हूं कि यह संभव हो तो कस्टम बिल्डपैक की आवश्यकता के बिना हेरोोक पर काम करना चाहें। कोई विचार? संभवतः स्प्राकेट्स में इन प्रकार के हुक होते हैं।

उत्तर

22

जैसा कि मैं स्रोत से देख सकता हूं, स्प्राकेट्स में ऐसा हुक नहीं है, लेकिन आप रेक कार्य हुक का उपयोग कर सकते हैं। उदाहरण के लिए, आप एक रेक कार्य तैयार करेंगे जो सभी प्रीप्रोसेसरों, गल्प इत्यादि को शुरू करता है, इसलिए यह कार्य प्रीकंपिलेशन से पहले रखा जा सकता है।

# lib/tasks/before_assets_precompile.rake 

task :before_assets_precompile do 
    # run a command which starts your packaging 
    system('gulp production') 
end 

# every time you execute 'rake assets:precompile' 
# run 'before_assets_precompile' first  
Rake::Task['assets:precompile'].enhance ['before_assets_precompile'] 

तो फिर तुम सिर्फ rake assets:precompile चलाते हैं, और एक परिणाम के रूप कार्य before_assets_precompile उसके ठीक पहले निष्पादित किया जाएगा।

इसके अलावा exec के बजाय system का उपयोग सुनिश्चित करें, क्योंकि exec इस पूर्व-कार्य चलाने का एक मंच पर प्रक्रिया से बाहर हो जाएंगे और खुद के बाद assets:precompile नहीं चलेंगे रूप में यह उम्मीद थी।

सूत्रों का कहना है:

  1. Rake before task hook
  2. http://www.dan-manges.com/blog/modifying-rake-tasks
+0

मैं वास्तव में क्या जरूरत है! धन्यवाद! – btown

+0

क्या यह स्वचालित संपत्ति-संकलन के साथ काम करेगा जो 'विकास' मोड में होता है? – Suan

+0

@Suan, अगर मुझे गलत नहीं लगता है, तो विकास एनवी के लिए लाइव संकलन पृष्ठ लोड पर किया जाता है, हर बार पृष्ठ को फिर से लोड करने के लिए एक ऐप बनाने के लिए एक गल्प कार्य चलाते हुए मुझे थोड़ा अधिक लगता है। मुझे लगता है कि इस मामले के लिए गल्प घड़ी का उपयोग करना बेहतर है, इसलिए यह केवल ऐप का निर्माण करेगा जब आप स्रोत फ़ाइलों में परिवर्तन करते हैं, और पेज रीलोड पर आपको गल्प द्वारा तैयार की गई नवीनतम संपत्तियां मिलेंगी। मुझे यकीन नहीं है कि लाइव संकलन के लिए एक समान रेक कार्य है या नहीं। –

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

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