2012-04-11 10 views
29

काम नहीं कर रहा है मेरा ऐप विकास मोड में ठीक चलता है।रेल 3.1.3: उत्पादन में स्थानीय रूप से चलाने की कोशिश कर रहा है, संपत्ति पाइपलाइन

जब मैं RAILS_ENV=production rails s का उपयोग कर उत्पादन मोड में चलाता हूं तो मेरी कोई भी .css या .js फ़ाइलें लोड नहीं होती हैं। (मैं precompile संपत्ति किया था, RAILS_ENV=production bundle exec rake assets:precompile इस्तेमाल करते हैं।)

webrick लॉग दिखाता है:

ActionController :: RoutingError (कोई मार्ग मैचों [प्राप्त] "/assets/application-a73ce43be7bf75953cd0c60b2b4a7eb0.js"):

और

ActionController :: RoutingError (कोई मार्ग मैचों [प्राप्त] "/assets/application-986dd79830088c416c1632c12999ec69.css"):

फ़ाइलों संकलित किया गया (लॉग \ production.log फ़ाइल के अनुसार) और मेरे सार्वजनिक/संपत्ति निर्देशिका के साथ और अंगुली की छाप के बिना उन फ़ाइलों को दिखाता है:

ls public/assets 
application-986dd79830088c416c1632c12999ec69.css 
application-986dd79830088c416c1632c12999ec69.css.gz 
application-a73ce43be7bf75953cd0c60b2b4a7eb0.js 
application-a73ce43be7bf75953cd0c60b2b4a7eb0.js.gz 
application.css 
application.css.gz 
application.js 
application.js.gz 

उत्तर

47

रेल डिफ़ॉल्ट रूप से उत्पादन मोड में स्थिर संपत्ति की सेवा नहीं है। आप इसे निष्क्रिय और स्थिर संपत्ति की सेवा करना चाहते हैं, इस के साथ अपने config/environments/production.rb फ़ाइल का अद्यतन:

config.serve_static_assets = true 

रेल 'डिफ़ॉल्ट कॉन्फ़िगरेशन के पीछे तर्क यह मानता है कि आप उत्पादन मोड में एक मानक वेब सर्वर के पीछे चल रहा हो जाएगा (अपाचे, एनजिनक्स, इत्यादि) जो तब आपके रेल ऐप के अनुरोधों को प्रॉक्सी करेगा। चूंकि परिसंपत्तियों का प्रीकंपल किया गया है, अपाचे/एनजिनक्स/आदि। आपकी रेल प्रक्रियाओं से बात करने की आवश्यकता के बिना सीधे उनकी सेवा कर सकते हैं।

+0

जो अब समझ में आता है - शानदार स्पष्टीकरण के लिए धन्यवाद। – jpwynn

+0

@Dylan बस एक ही समस्या में भाग गया - भयानक स्पष्टीकरण के लिए धन्यवाद! – weltschmerz

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