2012-06-28 15 views
5

जब मैं bundle exec rake assets:precompile --trace चलाता हूं, तो मेरा प्रीकंपिलेशन विफल रहता है लेकिन मुझे इसके लिए कोई विशिष्ट कारण नहीं दिख रहा है।रेक संपत्ति प्रीकंपाइल विफल

मेरी उत्पादन के लिए इस pastebin देखें: http://pastebin.com/zggZyPyM

+0

क्या आपके पास जावास्क्रिप्ट रनटाइम स्थापित है? लिनक्स वीएम पर संपत्तियों को पूर्व-संकलित करने का प्रयास करते समय मुझे इस सप्ताह एक समान त्रुटि का सामना करना पड़ा। – Zajn

+1

यदि ज़ज़न का सुझाव काम नहीं करता है, तो आपको अपना syslog जांचना चाहिए। प्रीकंपिलिंग संपत्तियों में बहुत सारी मेमोरी होती है ("रेल की तुलना में अधिक") और संभव है कि ओएस उस प्रक्रिया को बंद कर रहा है। – rubish

+0

आह! @ रुबिश आप सही हैं ... स्मृति से बाहर चल रहे हैं। – jasonlfunk

उत्तर

13

Precompiling संपत्ति स्मृति का एक बहुत लेता है। ~ = 400 एमबी मेरे मामले में। यह संभव हो सकता है कि अत्यधिक स्मृति उपयोग के कारण ओएस प्रक्रिया की हत्या कर रहा है। यह जांचने के लिए कि क्या यह मामला है, आप syslog जांच सकते हैं।

आप स्थिति से बचने के लिए अपने सर्वर की याददाश्त बढ़ा सकते हैं। यदि यह संभव नहीं है, तो मैं सुझाव दूंगा कि आप अपने स्थानीय सिस्टम पर संपत्तियों को प्रीकंपाइल करें, उन्हें रेपो में समर्पित करें और सर्वर पर तैनात करें। इस तरह आपको अपने सर्वर पर संपत्तियों को संकलित नहीं करना पड़ेगा। हालांकि आप किसी भी तरह से पहले जेनरेट की गई संपत्तियों को हटाने और प्रक्रिया को स्वचालित करने के तरीकों को देखना चाहते हैं।

2

, लेकिन समस्या हल हो गई थी मैंने पहले node.js स्थापित करने का प्रयास किया था। और फिर, निम्न आदेश bundle exec rake assets:precompile चलाया। केवल तभी मैंने त्रुटि को नहीं देखा।

प्रारंभ में, मैंने सोचा कि यह कम स्मृति की वजह से भी था। लगभग सभी चल रहे अनुप्रयोगों को साफ किया, लेकिन समाधान नहीं मिला। इसके अलावा, मैंने रुबी को प्रशासक के रूप में खोला। सुनिश्चित नहीं है कि इससे भी मदद मिली है, लेकिन समस्या हल हो गई थी।

+0

विंडोज़ पर नोड.जेएस स्थापित करने से मेरे लिए यह समस्या तय हुई। एफवाईआई, यह [पृष्ठ] (http://ajacevedo.com/2013/using-node-js-as-a-rails-javascript-runtime/) में एनोड.जेएस – konyak

+0

का उपयोग करने के लिए env सेटिंग पर अच्छी जानकारी है बंडल निष्पादन कार्य मेरे लिए – Feuda

0

इस समस्या को संपत्तियों को प्रीकंपाइल करने के लिए node.js जेएस रनटाइम का उपयोग करके भी हल किया जा सकता है क्योंकि यह स्पष्ट रूप से कम स्मृति पदचिह्न है। उबुनुतू 14.04 के लिए मुझे apt-get install nodejs चलाने की आवश्यकता है, फिर Gemfile में gem 'node' के साथ डिफ़ॉल्ट जेएस रनटाइम को प्रतिस्थापित करें, bundle चलाएं और अंततः प्रीकंपाइल को दोबारा शुरू करें। मैं किसी अन्य स्थान पर प्रीकंपिलिंग के खिलाफ सावधानी बरतता हूं क्योंकि आप सीएसएस या जेएस परिवर्तन के बाद ऐसा करना भूल सकते हैं, जिससे त्रुटियां आती हैं।

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