2013-02-20 46 views
19

प्रीकंपलिंग करते समय मुझे अपने उत्पादक बॉक्स पर संपत्तियों को संकलित करते समय बहुत से उपयोगकर्ताओं की तरह समान समस्याएं आ रही हैं। केवल अंतर यह है कि समस्या को हल करने के लिए मुझे ट्रेस से कोई संकेत नहीं मिल सकता है।"कमांड को स्थिति() के साथ विफल रहा है जब संपत्ति

rake assets:precompile RAILS_ENV=production --trace 
** Invoke assets:precompile (first_time) 
** Execute assets:precompile 
/usr/local/rbenv/versions/1.9.3-p362/bin/ruby /usr/local/rbenv/versions/1.9.3-p362/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets --trace 
** Invoke assets:precompile:all (first_time) 
** Execute assets:precompile:all 
** Invoke assets:precompile:primary (first_time) 
** Invoke assets:environment (first_time) 
** Execute assets:environment 
** Invoke environment (first_time) 
** Execute environment 
** Invoke tmp:cache:clear (first_time) 
** Execute tmp:cache:clear 
** Execute assets:precompile:primary 
rake aborted! 
Command failed with status(): [/usr/local/rbenv/versions/1.9.3-p362/bin/r...] 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/file_utils.rb:53:in `block in create_shell_runner' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/file_utils.rb:45:in `call' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/file_utils.rb:45:in `sh' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/file_utils_ext.rb:39:in `sh' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/file_utils.rb:80:in `ruby' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/file_utils_ext.rb:39:in `ruby' 
/home/app/application/ruby/1.9.1/gems/actionpack-3.2.12/lib/sprockets/assets.rake:12:in `ruby_rake_task' 
/home/app/application/ruby/1.9.1/gems/actionpack-3.2.12/lib/sprockets/assets.rake:21:in `invoke_or_reboot_rake_task' 
/home/app/application/ruby/1.9.1/gems/actionpack-3.2.12/lib/sprockets/assets.rake:29:in `block (2 levels) in <top (required)>' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/task.rb:205:in `call' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/task.rb:205:in `block in execute' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/task.rb:200:in `each' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/task.rb:200:in `execute' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/task.rb:158:in `block in invoke_with_call_chain' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/task.rb:151:in `invoke_with_call_chain' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/task.rb:144:in `invoke' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/application.rb:116:in `invoke_task' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/application.rb:94:in `block (2 levels) in top_level' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/application.rb:94:in `each' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/application.rb:94:in `block in top_level' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/application.rb:88:in `top_level' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/application.rb:66:in `block in run' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/application.rb:133:in `standard_exception_handling' 
/usr/local/rbenv/versions/1.9.3-p362/lib/ruby/1.9.1/rake/application.rb:63:in `run' 
/usr/local/rbenv/versions/1.9.3-p362/bin/rake:32:in `<main>' 
Tasks: TOP => assets:precompile 

प्रभावी रूप से कोई स्थिति कोड नहीं है, बस असफल। अगर मैं सीधे रेक या bundle exec के माध्यम से कॉल करता हूं तो इससे कोई फर्क नहीं पड़ता है।

एक वैश्विक rbenv स्थापना के साथ पर्यावरण डेबियन निचोड़ बॉक्स (/usr/local/rbenv की तरह आप का पता लगाने से देख सकते हैं) के बारे में। रूबी 1.9.3 2012-12-25 पैचलेवल 362.

इस पर कोई संकेत/विचार?

उत्तर

18

मैं इसे स्वयं जवाब देने जा रहा हूं क्योंकि मैं इसे कम या ज्यादा हल कर सकता हूं। अगर किसी के पास अतिरिक्तता है, तो अपना उत्तर लिखने में संकोच न करें या इस उत्तर/प्रश्न पर टिप्पणी न करें।

क्या मुझे पता चला गया है अब तक:

तुम सिर्फ प्राथमिक परिसंपत्तियों (assets:precompile:primary) संकलन या स्पष्ट रूप से assets:precompile:all बुला आप के स्रोत के बारे में एक संकेत के साथ अंत हो सकता है जैसे द्वारा assets:precompile के साथ चारों ओर खेलते हैं तुम्हारी समस्या। मेरे मामले में, मैं Errno::EACCES में public/ और tmp/ दोनों में भाग गया। किसी भी तरह से प्रदर्शित नहीं किया गया था, इसलिए सुनिश्चित करें कि आपके उपयोगकर्ता के पास फाइलें और फ़ोल्डर्स बनाने/हटाने के पूर्ण अधिकार हैं।

मेरे मामले में, यह कभी-कभी काम करता है क्योंकि मैंने रेल ऐप बंद कर दिया है और यह नीचे होने पर प्रीकंपल किया गया है। चूंकि precompiling बहुत सारी स्मृति आवंटित करता है, मैंने कुछ परीक्षण और त्रुटि की और अंततः Killed संदेश ज्ञात हो गया जब रेक asstes:precompile:primary निष्पादित करने का प्रयास करता है। कार्य बहुत अधिक स्मृति का उपयोग करने के कारण बस मारा गया था।

एक और समस्या यह थी कि स्पॉकेट को bootstrap को प्रीकंपिलेशन पर संपत्ति पाइपलाइन में रखने के लिए नहीं मिला। को group :assets के बाहर ले जाने से हल किया गया। यह कुछ भी था जब मैंने आदेशों के साथ खेला जब मैं संकेत दिया।

हल करने का सबसे अच्छा तरीका - या बेहतर: आसपास काम करना - यह समस्या स्थानीय रूप से अपनी संपत्तियों को संकलित करना है। बस अपने टर्मिनल में rake assets:precompile RAILS_ENV=development फेंक दें और फिर public/assets परिनियोजित करें। इसे तैनात करने के बाद अपने विकास वातावरण में उस फ़ोल्डर को हटाना याद रखें या आप app/assets/* पर अपने परिवर्तनों को क्यों लागू नहीं कर रहे हैं, इस पर डिबगिंग समाप्त कर देंगे। कम से कम यह मेरे लिए काम करता है (टीएम)।

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

+0

आप सही प्रक्रिया ओएस – rainkinz

6

मुझे भी एक ही समस्या थी। मैं स्वैप (मेरे सर्वर पर उपलब्ध 512RAM के लिए मेरे मामले 1GB में) जोड़ने

+3

था एक ही समस्या से हत्या किए जाने के बारे में पर थे:

जोड़ने स्वैप के लिए इस मार्गदर्शिका देखें। डिजिटलओअन होस्टिंग में और 512RAM पर उबंटू 64-बिट बंडलर के लिए बहुत छोटा है। इसे 32-बिट या 1024RAM में बदलें और यह ठीक काम करता है। –