2013-02-23 27 views
13

Başvurumu dağıtmak çalışıyorum ve ben sorunu süreci fazla uzun sürmesi olduğunu düşünüyorumCapistrano öldürme varlıklar: ön derleme

*** [err :: xxx.xxx.xx.xxx] bash: line 1: 9953 Killed     bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile 

alıyorum. Günlüklerde hata yok ve top anormal bir şey göstermedi. Günlüğünden çıkmayı başardığım şey, öldürülme sürecinin application.js derlemesi olması. Yerel olarak rake assets:precompile numaralı telefonu çalıştırdığımda hata/uyarısı yoktu.

Capistrano'nun işlemi öldürmeden önce beklediği uzunluğu uzatabilir miyim? Bu aslında sorun mu? Başka nereye bakabilirim?

Güncelleme

Ben

bundle exec rake assets:precompile RAILS_ENV=production --trace 
çalıştırdığınızda

bundle exec rake assets:precompile RAILS_ENV=production RAILS_GROUPS=assets --trace 

aşağıdaki çıktıyı

** Invoke assets:precompile (first_time) 
** Execute assets:precompile 
** 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 tmp:cache:clear (first_time) 
** Execute tmp:cache:clear 
** Execute assets:precompile:primary 
Killed 

olsun çalışanBen **

olsun varlıkları yürütün: ön derleme

.../.rvm/rubies/ruby-1.9.3-p374/bin/ruby path/to/app/production/shared/bundle/ruby/1.9.1/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 tmp:cache:clear (first_time) 

** Execute tmp:cache:clear 

** Execute assets:precompile:primary 

rake aborted! 

Command failed with status(): [/home/user/.rvm/rubies/ruby-1.9.3-p374...] 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/file_utils.rb:53:in `block in create_shell_runner' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/file_utils.rb:45:in `call' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/file_utils.rb:45:in `sh' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/file_utils_ext.rb:40:in `sh' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/file_utils.rb:80:in `ruby' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/file_utils_ext.rb:40:in `ruby' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/actionpack-3.2.11/lib/sprockets/assets.rake:12:in `ruby_rake_task' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/actionpack-3.2.11/lib/sprockets/assets.rake:21:in `invoke_or_reboot_rake_task' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/actionpack-3.2.11/lib/sprockets/assets.rake:29:in `block (2 levels) in <top (required)>' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/task.rb:228:in `call' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/task.rb:228:in `block in execute' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/task.rb:223:in `each' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/task.rb:223:in `execute' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/task.rb:166:in `block in invoke_with_call_chain' 

/home/user/.rvm/rubies/ruby-1.9.3-p374/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/task.rb:159:in `invoke_with_call_chain' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/task.rb:152:in `invoke' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:143:in `invoke_task' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:101:in `block (2 levels) in top_level' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:101:in `each' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:101:in `block in top_level' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:110:in `run_with_threads' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:95:in `top_level' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:73:in `block in run' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:160:in `standard_exception_handling' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/lib/rake/application.rb:70:in `run' 

path/to/app/production/shared/bundle/ruby/1.9.1/gems/rake-10.0.3/bin/rake:33:in `<top (required)>' 

path/to/app/production/shared/bundle/ruby/1.9.1/bin/rake:23:in `load' 

path/to/app/production/shared/bundle/ruby/1.9.1/bin/rake:23:in `<main>' 

Tasks: TOP => assets:precompile 

Bu evreleme dizinde olmaz. Sanırım yüzüme bakıyormuş gibi hissediyorum01251641061745151505369139101501126101

+0

Aynı komutu doğrudan sunucuda çalıştırdığınızda ne olur? ya da "yerel olarak" dediğin zaman mı demek istiyorsun? –

+0

btw. Capfile'ınızda varsayılan 'load 'konuşlandırma/varlık' 'çağrısını kullandığınızı varsayalım mı? –

+0

Yükümdeki 'deploy/assets' çağrısını kullanıyorum ve bu hatayı, linux sunucularımızdan biri olan – HelloWorld

cevap

17

Bu yüzden problemimiz bootstrap-sass'in varlığın ön derlemesinin bir parçası olduğunu düşünüyorum. Yani tüm css'yi havaya uçurdu ve sonra hepsini topladı. Bu, birçok sass/css ile birleştirildiğinde, işlem tonlarca bellek kullanır ve işletim sistemi onu öldürür. Çok araştırmadan sonra oldukça iyi bir çözüm buldum. Yerel olarak derleyin, sıkıştırın, yükleyin, sunucu üzerinde sıkıştırın, sunucuda symlink yapın ve oluşturulan tüm ek dosyaları silin (yerel öğeler/sıkıştırılmış dosyalar).

İşte

namespace :deploy do 
    namespace :assets do 

    task :precompile, :roles => :web do 
     from = source.next_revision(current_revision) 
     if capture("cd #{latest_release} && #{source.local.log(from)} vendor/assets/ lib/assets/ app/assets/ | wc -l").to_i > 0 
     run_locally("RAILS_ENV=#{rails_env} rake assets:clean && RAILS_ENV=#{rails_env} rake assets:precompile") 
     run_locally "cd public && tar -jcf assets.tar.bz2 assets" 
     top.upload "public/assets.tar.bz2", "#{shared_path}", :via => :scp 
     run "cd #{shared_path} && tar -jxf assets.tar.bz2 && rm assets.tar.bz2" 
     run_locally "rm public/assets.tar.bz2" 
     run_locally("rake assets:clean") 
     else 
     logger.info "Skipping asset precompilation because there were no asset changes" 
     end 
    end 

    task :symlink, roles: :web do 
     run ("rm -rf #{latest_release}/public/assets && 
      mkdir -p #{latest_release}/public && 
      mkdir -p #{shared_path}/assets && 
      ln -s #{shared_path}/assets #{latest_release}/public/assets") 
    end 
    end 

    # other stuff... 

end 

İşte where I found the script var senaryo. Bu daha iyi bir açıklama getirmeye

Düzenleme sağlamaktadır: yeni raylar dağıtımları ile ilgili bir sorun oluştu

. Tam sürümden emin değilim, ancak rayları etkiliyor gibi görünüyordu. 4. Varlıklar, hangi ortamda derlendiklerini belirtmeli, aksi takdirde üretim/aşamalandırma ortamları bunları bulamayacaktır.

+0

@ HelloWorld'den alıyorum, bu sizin için işe yarıyor mu? –

+0

, bahsettiğiniz sorunun arkasında RAM + bootstrap yeterli değil. Test sunucumlarımızdan birinde bu sorunu yaşadığımdan beri, sunucuyu kapistrano kullanarak sunucudaki varlıkları derlemeyi tercih ettiğimden bu sunucuyu dev moduna geçirdim.Cevabını denemedim ama işe yarıyor sanırım ve etrafta yararlı bir iş olabilir. Bunu gönderdiğiniz için teşekkürler & 50s cevap. – HelloWorld

+1

Teşekkürler Peter bu betik bir çekicilik çalıştı, dağıtım süremi birkaç dakikadan birkaç saniyeye indirdi. –