2013-02-20 9 views
19

Mam podobne problemy, jak wielu użytkowników podczas kompilowania zasobów w ich polu produktywnym. Jedyna różnica polega na tym, że nie mogę wykluczyć śladu, aby rozwiązać problem."Polecenie nie powiodło się ze statusem()" podczas wstępnej kompilacji zasobów

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 

Nie ma praktycznie żadnego kodu statusu, tylko błąd. Nie ma to również znaczenia, jeśli zadzwonię bezpośrednio do rake lub przez bundle exec.

O debian polu środowisko wycisnąć z instalacją rbenv globalnej (/usr/local/rbenv jak widać śladu). Ruby 1.9.3 2012-12-25 patchlevel 362.

Jakieś wskazówki/pomysły na ten temat?

Odpowiedz

18

Mam zamiar odpowiedzieć na to sam, ponieważ mogłem rozwiązać go mniej więcej. Jeśli ktoś ma dodatki, nie wahaj się napisać własną odpowiedź lub skomentuj tę odpowiedź/pytanie.

Co znalazłem do tej pory:

Jeśli bawić z assets:precompile przez np prostu kompilacji aktywów podstawowych (assets:precompile:primary) lub jawne wywołanie assets:precompile:all może skończyć się z nutą o źródle Twój problem. W moim przypadku natknąłem się na Errno::EACCES na obu public/ i tmp/. W jakiś sposób nie był wyświetlany, więc upewnij się, że użytkownik ma pełne prawa do tworzenia/usuwania plików i folderów.

W moim przypadku zadziałało to czasami, ponieważ zamknąłem aplikację szyn i dokonałem wstępnej kompilacji, gdy była wyłączona. Ponieważ wstępna kompilacja przydziela dużo pamięci, zrobiłem próbę i błąd i ostatecznie otrzymałem znany komunikat Killed, gdy rake próbuje wykonać asstes:precompile:primary. Zadanie zostało po prostu zabite z powodu użycia zbyt dużej ilości pamięci.

Innym problemem było to, że zębatki nie mogły znaleźć bootstrap, aby umieścić je w rurociągu aktywów na etapie wstępnej kompilacji. Przeniesienie gem 'bootstrap' poza group :assets rozwiązało to. Było to również coś, o czym mi zasugerowałem, kiedy bawiłem się przy pomocy poleceń.

Najlepszym sposobem na rozwiązanie - lub lepiej: obejść - jest tylko proste skompilowanie zasobów lokalnie. Wystarczy wrzucić terminal rake assets:precompile RAILS_ENV=development, a następnie wdrożyć public/assets. Pamiętaj, aby usunąć ten folder w środowisku programistycznym po jego wdrożeniu lub zakończy się debugowanie, dlaczego zmiany wprowadzone w app/assets/* nie przynoszą efektu w fazie rozwoju. Przynajmniej to działa dla mnie (tm).

Alternatywnie, twoja partycja wymiany może również działać. Jednak kompilacja na VPS, w której musisz użyć swap, może trochę potrwać, więc trzymam się lokalnej drogi.

+0

Miałeś rację na temat procesu zabijane przez OS – rainkinz

6

Też miałem ten sam problem. Naprawiłem to przez dodanie zamiany (w moim przypadku 1 gb dla 512RAM dostępnej na moim serwerze)