2013-09-26 6 views
7

के लिए समर्थन समर्थन मैं संपत्ति पाइपलाइन का उपयोग कर रेल ऐप पर काम कर रहा हूं।रेल 3.2 देव पर्यावरण स्रोत जावास्क्रिप्ट

config.assets.compress = false 
    config.assets.compile = true 
    config.assets.debug = true 

देव वातावरण में, संपत्ति को बंडल नहीं कर रहे हैं और प्रत्येक व्यक्तिगत रूप से रेल द्वारा कार्य किया जाता है: development.rb निम्नलिखित है। इस बिंदु पर, व्यक्तिगत रूप से सेवा की जा रही संपत्तियों की संख्या 50 से अधिक है। इसलिए, पूर्ण पृष्ठ रीलोड्स बहुत धीमी हैं।

मैं देव वातावरण पर तेज़ी से लोड होने के समय कम से कम कुछ संपत्तियों में उन्हें जोड़ना चाहता हूं लेकिन ऐसा करने से, मैंने क्रोम देव उपकरण में व्यक्तिगत रूप से डीबग/देखने की क्षमता खो दी। उदाहरण: http://d.pr/i/ZFge

वहाँ मेरी जानकारी में यह हल करने के लिए, आप कर के बाद दो तरीके हैं:

config.assets.debug = false 

और उन्हें के रूप में श्रेणीबद्ध संपत्ति की सेवा शुरू करते हैं।

  1. पुरानी हैकी वे: @sourceUrl चाल।
  2. नया तरीका: sourceMaps

क्या कोई गाइड है कि मैं उन्हें रेल ऐप पर कैसे सक्षम कर सकता हूं? मैं कॉफीस्क्रिप्ट का उपयोग नहीं करता इसलिए https://github.com/markbates/coffee-rails-source-maps सहायक नहीं है। अधिकांश Google खोज उस पर ले जाती हैं।

मैं मूल जेएस के लिए एक समाधान की तलाश में हूं।

उत्तर

13

मैंने इस समस्या के लिए कोई मौजूदा समाधान नहीं देखा है। लेकिन एक इमारत काफी सीधे आगे होगी।

निम्नलिखित मानते हैं gem uglifier उपयोग में जेएस कंप्रेसर है।

यूग्लीफायर के संस्करण 2 में स्रोतमैप बनाने के लिए एक तंत्र है। यह निम्न सिंटैक्स

uglified, source_map = Uglifier.new.compile_with_map(source) 

रेल संपत्ति पाइपलाइन कि here

एक साधारण ट्रांसफार्मर वर्ग के बारे में निम्न सिंटैक्स का उपयोग कर

config.assets.js_compressor = Transformer.new 

पढ़ने (एक compress विधि के साथ) कस्टम जे एस कंप्रेसर निर्दिष्ट करने के लिए अनुमति देता है निम्नलिखित

class Transformer 
    def compress(string) 
    if Rails.env.development? 
     output, sourcemap = Uglifier.new.compile_with_map(string) 

     # write the sourcemap to a file somewhere under public 

     sourcemap_comment = "//@ sourceMappingURL=#{sourcemap_path}}\n" 

     return output + sourcemap_comment 
    else 
     Uglifier.compile(string) 
    end 
    end 
end 
जैसा दिखेगा

नोट: यह अवधारणाओं को समझाते हुए पूर्ण समाधान नहीं है। आप इस पर निर्माण कर सकते हैं और इसे और अधिक मजबूत बनाने के तरीके जोड़ सकते हैं।

+0

रिज़ॉल्यूशन के लिए, मैंने इसे रोल करने की कोशिश छोड़ दी। यह संपत्ति की सेवा की प्रक्रिया के एक बहुत ही महत्वपूर्ण हिस्से के आसपास बहुत ज्यादा मक्का लग रहा था। यहां दुर्घटनाग्रस्त गलती बहुत ज्यादा सिरदर्द का कारण बन जाएगी। इसकी करुणा अभी भी ऐसा करने का कोई आधिकारिक तरीका नहीं है। – Rajat

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