2012-03-12 14 views
35

मेरे heroku उत्पादन वातावरण में जावास्क्रिप्ट डीबग करने के लिए, मुझे संपत्ति संपीड़न (या कम से कम जावास्क्रिप्ट का संपीड़न) अक्षम करने की आवश्यकता है। मैंने config.assets.debug = true के साथ config.assets.compress = false की कोशिश की, और संकुचित संपत्तियों का अभी भी उपयोग किया गया था। मैंने तब संपीड़ित संपत्तियों को हटा दिया, जिस बिंदु पर कोई संपत्ति बिल्कुल प्रदान नहीं की गई थी। मैंने config.assets.enabled = false जोड़ा, जिसने मदद नहीं की। मैंने असम्पीडित संपत्तियों को विभिन्न निर्देशिकाओं में कॉपी करने की कोशिश की, जिसमें अनुप्रयोग रूट, सार्वजनिक, और सार्वजनिक/संपत्तियां (बाद वाले दो फ़ोल्डर्स "छवियों," जावास्क्रिप्ट "और" स्टाइलशीट्स "का उपयोग करके, और संपत्तियों को सीधे फ़ोल्डर में डालकर तीन उपफोल्डर)। मैं अंततः सभी जावास्क्रिप्ट फ़ाइलों को संदर्भित करने के लिए एचटीएमएल को बदलकर काम करने के लिए जावास्क्रिप्ट प्राप्त करने में सक्षम था। लेकिन सीएसएस और छवियां अभी भी काम नहीं कर रही हैं।रेल उत्पादन में संपत्ति न्यूनीकरण को अक्षम करें

मैंने सोचा होगा कि मेरा मूल config.assets.compress = false काम करना चाहिए था।

+0

आप निश्चित रूप से संशोधित किया गया 'config/वातावरण/production.rb'? –

+0

क्या आप संपत्तियों तक पहुंचने के लिए रेल टैग टैगर्स का उपयोग कर रहे हैं (javascript_include_tag 'script.js')? क्या आप एक फाइल पर ध्यान केंद्रित कर सकते हैं और हमें एक उदाहरण दे सकते हैं कि यह कैसे कार्यान्वित किया गया है और क्या हो रहा है? – mltsy

उत्तर

47

मैं the docs पढ़ने के बाद इस समाधान के साथ आया था:

एक मॉड्यूल js संपीड़ित करने के लिए कुछ भी नहीं है/यहाँ सीएसएस करता है बनाने के लिए: lib/modules/no_compression.rb

class NoCompression 
    def compress(string) 
    # do nothing 
    string 
    end 
end 

को अपनी संपत्ति कॉन्फ़िगर साथ संकुचित (नहीं) जा अपने है कुछ भी नहीं कंप्रेसर

config.assets.compress = true 
config.assets.js_compressor = NoCompression.new 
config.assets.css_compressor = NoCompression.new 
+0

बहुत चालाक! मैं ऐसा कभी सोच नहीं सकता था। धन्यवाद! –

+0

स्टेजिंग सर्वर पर तैनाती करते समय उपयोग करने के लिए बहुत अच्छी चीज। हर बार जब मैं उसकेोकू पर तैनात करता हूं तो मुझे कुल 260 से 100 सेकंड बचाता है। – hakunin

+0

क्या यह अभी भी हैश को संपत्ति फ़ाइल नामों में जोड़ देगा?मुझे सर्वर पर कुछ कोड डीबग करना है, लेकिन त्रुटि को खोजने के लिए मुझे सही ढंग से धोए गए संपत्ति नामों का उपयोग करने की आवश्यकता है। – Ziggy

0

ऐसा लगता है कि यह रेल में एक बग रहा है। आने वाली रेल 3.2.9 के लिए चेंजलॉग से, क्या आप यह चल रहे थे?

सम्मान config.digest = asset_path

पहले के लिए झूठी, asset_path internals पर तभी विचार किया: विकल्प को पचाने, लेकिन वैश्विक config सेटिंग को अनदेखा किया। इसका मतलब है कि config.digest = false का उपयोग config.compile = false के साथ संयोजन में नहीं किया जा सकता है यह व्यवहार को सुधारता है।

http://weblog.rubyonrails.org/2012/10/29/ann-rails-3-2-9-rc1-has-been-released/

आपको लगता है कि संबंधित हो सकता है?

+0

मुझे नहीं लगता कि दोनों संबंधित हैं, क्योंकि मेरा मानना ​​है कि परिवर्तन को संपत्ति नाम में डाइजेस्ट जोड़ा गया था या नहीं, जबकि मेरे मुद्दे को जावास्क्रिप्ट संपीड़न के साथ और अधिक करना था। यह संभव है कि config.asset.compression के साथ एक ही समस्या मौजूद है और मुझे अभी तक यह नहीं मिला है, मुझे लगता है। किसी भी दर पर, इस पर सिर के लिए धन्यवाद। –

6

इसके अलावा ध्यान देने योग्य ... इसके अलावा समाधान ncherro करने के लिए आप करने की आवश्यकता होगी निम्नलिखित:

  1. अपने नए मॉड्यूल को कहीं भी रखना सुनिश्चित करें जहां इसे डिफ़ॉल्ट रूप से लोड किया जाएगा। मेरे मामले में lib/अतिरिक्त था।
  2. अपनी मौजूदा संपत्तियों को साफ करने के लिए rake assets:clean चलाएं।
  3. नए कंप्रेसर का उपयोग करके अपनी संपत्तियों को संकलित करने के लिए rake assets:precompile चलाएं।
  4. ... मैं का उपयोग touch tmp/restart.txt

मुबारक डिबगिंग अपने एप्लिकेशन को पुनः प्रारंभ;)

11

मैं अपने js डिबग करने के लिए की जरूरत है तो मैं ncherro के समाधान की कोशिश की। समस्या यह थी कि यह अभी भी

रेक को निरस्त कर दिया जाएगा! अप्रारंभीकृत निरंतर NoCompression

तो मैं सिर्फ NoCompression वर्ग production.rb फ़ाइल

# Compress JavaScripts and CSS 
    class NoCompression 
     def compress(string) 
      # do nothing 
      string 
     end 
    end 

    config.assets.compress = true 
    config.assets.js_compressor = NoCompression.new 
    config.assets.css_compressor = NoCompression.new 
20

के तहत रेल 4 में डाल बस config/environments/production.rb में लाइन

# config.assets.js_compressor = :uglifier 

बाहर टिप्पणी मेरे लिए काम किया । ऐसा लगता है कि डिफ़ॉल्ट कोई संपीड़न नहीं है।

6

यूग्लीफायर को टिप्पणी करें और config.assets.debug = true जोड़ें। यह मेरे लिए काम किया।

  • कम्प्रेस JavaScripts और सीएसएस:

    config.assets.js_compressor = :uglifier

  • डीबग मोड संयोजन और संपत्ति की पूर्व प्रसंस्करण अक्षम करता है। लेकिन इस विकल्प जटिल संपत्ति की एक बड़ी संख्या के साथ दृश्य प्रतिपादन में महत्वपूर्ण देरी हो सकती है:

    config.assets.debug = true

2
Heroku ऑन रेल्स 4 के साथ

आपको दो काम करने की जरूरत है। पहले के रूप में @geekQ उल्लेख किया है, में config/environments/production.rb

# config.assets.js_compressor = :uglifier 

दूसरा js_compressor लाइन बाहर टिप्पणी, आप Heroku's asset pipeline cache for Rails 4. ही MD5 के रूप में कैश में संस्करण कंपाइल नहीं किया जाएगा के साथ कोई भी फ़ाइल पर विचार करने की जरूरत है। पिछले (संभवतः संपीड़ित) संस्करण परोसा जाएगा। आपके द्वारा संपादित की गई कोई भी फ़ाइल में एक नया MD5 होगा और फिर से संकलित किया जाएगा।

आप पूरे संपत्ति कैश को Heroku Repo plugin से हीरोोक टूलबल्ट में भी शुद्ध कर सकते हैं। कि स्थापित करें, फिर कमांड

heroku repo:purge_cache 

का उपयोग कैश के शुद्धिकरण और अपने सभी परिसंपत्तियों फिर कंपाइल किया जाएगा के बाद एक नया संस्करण तैनात।

+0

'config.assets.js_compressor =: uglifier' को हटाने के लिए पर्याप्त है – Dorian

1

production.rb प्रभावों के प्रभावी होने के लिए config/initializers/assets.rb में Rails.application.config.assets.version को अपडेट करना पड़ा।

1

का पता लगाएं और environments/production.rb में इन लाइन बाहर टिप्पणी:

config.assets.js_compressor = ... 
config.assets.css_compressor = ... 
संबंधित मुद्दे