Capistrano deploy - ошибка прекомпиляции ресурсов
Я использую Capistrano для моего нового VPS. После первого развертывания (cap deploy) все было в порядке (сайт работал), но во втором развертывании произошел сбой на ресурсах: ошибка прекомпиляции.
Я использую рельсы 3.2.13, ruby 2.0.0, rvm.
ошибка:
* executing "cd -- /home/rails/releases/20140116121250 && RAILS_ENV=production RAILS_GROUPS=assets bundle exec rake assets:precompile"
servers: ["IP"]
[IP] executing command
*** [err :: IP] bash: line 1: 23406 Killed RAILS_ENV=production RAILS_GROUPS=assets bundle exec rake assets:precompile
command finished in 84187ms
*** [deploy:update_code] rolling back
* executing "rm -rf /home/rails/releases/20140116121250; true"
servers: ["IP"]
[IP] executing command
command finished in 519ms
failed: "rvm_path=/usr/local/rvm /usr/local/rvm/bin/rvm-shell 'default' -c 'cd -- /home/rails/releases/20140116121250 && RAILS_ENV=production RAILS_GROUPS=assets bundle exec rake assets:precompile'" on IP
файл deploy.rb:
set :application, "app_name"
set :repository, "git_repository"
role :web, "IP"
role :app, "IP"
role :db, "IP", :primary => true
set :user, "rails"
set :password, "password"
set :use_sudo, false
set :deploy_to, "/home/rails/"
set :deploy_via, :copy
set :normalize_asset_timestamps, false
require 'bundler/capistrano'
require "rvm/capistrano"
set :rvm_type, :system
Capfile
load 'deploy'
# Uncomment if you are using Rails' asset pipeline
load 'deploy/assets'
load 'config/deploy' # remove this line to skip loading any of the default tasks
Я совсем новичок в Capistrano, поэтому, пожалуйста, постарайтесь объяснить решение ясно. Спасибо за поддержку!
1 ответ
Похоже, у вас низкий объем оперативной памяти на вашем сервере vpn. (Vpn
поставки без обмена памяти на данный момент), таким образом, операционная система убивает ваш процесс развертывания.
Решение состоит в том, чтобы компилировать ресурсы локально (на вашей машине разработки)
добавлять deploy:assets:precompile
Задача вашему deploy.rb
файл (это для Capistrano 2)
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("rake assets:clean && 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
end
end
Затем просто повторно разверните приложение$ bundle exec cap deploy
желаю, чтобы это помогло