2012-04-18 12 views
5

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

कि के लिए, मैं, precompile सेवा और मेरी विकास के वातावरण जैसे यह उत्पादन पर किया जाता है पर असफल की जरूरत है।

मैं अपने config/development.rb करने के लिए कुछ पंक्तियां जोड़ी हैं:

config.serve_static_assets = true 
    config.assets.precompile += %w(store/all.js store/all.css admin/all.js admin/all.css) # @TODO: clean up, and optimize. 
    config.assets.compile = false 

rake RAILS_GROUPS=assets RAILS_ENV=development assets:precompile साथ यह मेरे सभी परिसंपत्तियों और public/ में manifest.yml देता चल रहा है।

लेकिन फिर सर्वर विफल रहता है:

Sprockets::Helpers::RailsHelper::AssetPaths::AssetNotPrecompiledError in Spree/home#index 

Showing /xxxx/app/views/spree/shared/_head.html.erb where line #13 raised: 

favicon.ico isn't precompiled 

favicon.ico precompiled नहीं है। लकिन यह है! इसके वहां, सार्वजनिक डीआईआर में, manifest.yml में, और मैं इसे ब्राउज़र (या wget) के साथ ला सकता हूं: http://localhost:3000/assets/favicon.ico

नोट फेविकॉन बस पहली संपत्ति कहलाता है। अगर मैं फेविकॉन को बाहर निकालता हूं, तो समस्या "अगली.जेएस" होने पर, या फिर जब इसे छीन लिया जाता है, तो "all.css", और इसी तरह की समस्या अगले सतह के साथ सतह पर होती है। मैं इसे "footer_bg.png" तक पट्टी कर सकता हूं, और फिर वहां असफल हो जाएगा। दोबारा: समस्या फेविकॉन नहीं है, लेकिन तथ्य यह है कि विकास पर्यावरण को प्रीकंपील्ड संपत्तियां बिल्कुल दिखाई नहीं देती हैं।

अधिक क्या विकास संपत्ति पाइपलाइन उत्पादन के समान प्राप्त करने के लिए आवश्यक है?

संपादित करें: अधिक स्पष्ट स्पष्टीकरण कि फेविकॉन समस्या नहीं है, केवल एक लक्षण है।

+0

आपका उत्पादन वातावरण ढेर क्या है? एकल सर्वर/बहु-सर्वर, अपाचे/Nginx, Heroku? क्या आप capistrano का उपयोग करके और capistrano नुस्खा का उपयोग कर तैनाती कर रहे हैं? क्या आप config.serve_static_assets = उत्पादन में सच का उपयोग कर रहे हैं? क्या आपने Rails के अनुसार रेल के भीतर अपाचे/nginx के माध्यम से serv_static_assets को संभालने का प्रयास किया है? – John

+0

मेरा उत्पादन ढेर काफी काला-बॉक्स यात्री है। यह एक साइट 5 vhost है। मैं capistrano के साथ तैनाती नहीं कर रहा हूँ, लेकिन एक गिट-पुश और पोस्ट-प्रतिबद्ध हुक (उर्फ गिट-तैनाती) के साथ। 'config.serve_static_assets = true' अक्षम है। मैंने परिसंपत्तियों की खुराक अपाचे की सेवा करने की कोशिश की है, हां। यह थोड़ा हल करता है। समस्या के रूप में मैं यहां हल करने की कोशिश करता हूं, मेरा ** विकास ** पर्यावरण उत्पादन पर मेरी संपत्ति की सेवा नहीं कर रहा है। – berkes

उत्तर

2

मैं एक अपाचे स्थापित करने समाप्त हो गया, समस्या निवारण के लिए localhost पर यात्री।

स्थैतिक संपत्ति की सेवा के कारण अपाचे (शायद कोई यात्री-सक्षम सर्वर हो सकता है)। इसके अलावा, स्थानीयहोस्ट पर मैं अपने लॉग में अपाचे की वर्बोजिटी को बहुत अधिक कर सकता हूं, मुझे पर्याप्त डीबग जानकारी प्रदान करता है।

यात्री रूबी संस्करण और मणि लोडिंग को जितना संभव हो सके उत्पादन के अनुकरण के लिए यात्री।

हथियार पर चलना बहुत अलग है, भले ही जितना संभव हो सके इम्यूलेटिंग, यह उत्पादन ढेर से बहुत अलग साबित हुआ; यही कारण है कि मैं वहां उत्पादन समस्याओं को पुन: उत्पन्न नहीं कर सका,

पूरे ढेर को फायर करना जैसे कि उत्पादन के लिए मुझे समस्या निवारण की अनुमति मिली।जो मुझे निष्कर्ष निकालने के लिए प्रेरित करता है कि कई समस्याएं संपत्ति-संकट पैदा कर रही हैं: एक रत्न संपत्ति नहीं उठाई जा रही है; एक अनुमति मुद्दा (संकलित संपत्ति www-data द्वारा पठनीय नहीं है) और कुछ संपत्तियों को ठीक से संकलित नहीं किया जा रहा है।

0

मुझे लगता है कि आप public में favicon.ico छोड़ने के लिए चाहते हो सकता है ...

alzabo0:~ $ rails --version 
Rails 3.2.3 
alzabo0:~ $ rails new ojoijoijo 
[...] 
     create public/404.html 
     create public/422.html 
     create public/500.html 
     create public/favicon.ico 
     create public/index.html 
     create public/robots.txt 
[...] 
+0

शायद। लेकिन वो बात मुद्दे से अलग है। समस्या favicon.ico नहीं है, समस्या यह है कि मेरे विकास env। संकलित संपत्तियों को पहचान नहीं पाएगा, जैसा कि मैं चाहता हूं। और चूंकि मैंने फेविकॉन को संपत्ति परिसंपत्ति पाइपलाइन (लंबी कहानी) चलाने के लिए चुना है, इसलिए यह पहली फाइल शामिल है और केवल एक उदाहरण है जहां संपत्ति पाइपलाइन चोक करता है। यदि मैं पाइपलाइन से फेविकॉन को स्थानांतरित करता हूं, जैसा कि आप सुझाव देते हैं, तो कुछ सीएसएस या जेएस फ़ाइल पर, संपत्ति पाइपलाइन कुछ लाइनों को आगे बढ़ाएगी। – berkes

0

बस एक अनुमान है, लेकिन अपने precompile सूची में जोड़ने का प्रयास करें:

config.assets.precompile += %w(store/all.js store/all.css admin/all.js admin/all.css favicon.ico) 
+0

वास्तव में यह काम करता है। अजीब बात यह है कि उत्पादन पर इसकी आवश्यकता नहीं है। और चूंकि यह पंक्ति मुख्य चीजों में से एक है जिसे मैं साफ करना, ठीक करना और अनुकूलित करना चाहता हूं, यह बिल्कुल वह हिस्सा है जो "उत्पादन पर ही होना चाहिए"। – berkes

+0

वास्तव में अजीब। शायद उत्पादन पर, यदि आप "संपत्तियों को रेक: साफ" करते हैं तो अचानक यह वहां काम नहीं करेगा? आप अपने दृश्य टेम्पलेट में favicon.ico का संदर्भ कैसे देते हैं? व्यक्तिगत रूप से, मैं favicon.ico लिंक उत्पन्न करने के लिए हेल्पर्स का उपयोग नहीं करता हूं। आप favicon_link_tag का उपयोग कर रहे हैं? यह एक अजीब बात है, शायद इसे अब देव में छोड़ दें और दिलचस्प बिट पर जाएं? – pduey

+0

कृपया ध्यान दें कि फेविकॉन * समस्या नहीं है *। समस्या यह है कि मेरे विकास env precompiled जब संपत्तियों को पहचान नहीं होगा। फेविकॉन * बस एक उदाहरण * है। जब मैं फेविकॉन छोड़ देता हूं, समस्या बनी हुई है, और अगली संपत्ति के साथ सतह होगी: एक जेएस या सीएसएस फ़ाइल। – berkes

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