ruby on rails 3 - Deploy error using capistrano failed: "sh -c 'cat /home........current/REVISION -


i error while deploying app vps capistrano. cap deploy:setup, , cap deploy:check executes without error!

when try cap deploy:cold or cap deploy, this

[deploy:update_code] rolling   * executing [#<capistrano::command::tree::elsebranch:0x0000010141e798 @condition="else", @command="rm -rf /home/yasinishyn/apps/mkv/releases/20130505214957; true", @callback=#<proc:0x0000010140f6a8@/usr/local/rvm/gems/ruby-2.0.0-p0/gems/capistrano-2.15.3/lib/capistrano/configuration/actions/invocation.rb:13>, @options={}, @skip=false>] servers: ["xxx.xxx.xxx.xxx"] [xxx.xxx.xxx.xxx] executing command command finished in 225ms failed: "sh -c 'cat /home/yasinishyn/apps/mkv/current/revision'" on xxx.xxx.xxx.xxx 

how debug this? in error? means "failed: "sh -c 'cat /home/yasinishyn/apps/mkv/current/revision'" on 198.211.125.183"?

deploy.rb:

require "bundler/capistrano"   server "xxx.xxx.xxx.xxx", :web, :app, :db, primary: true  set :application, "app"  set :user, "user"  set :deploy_to, "/home/#{user}/apps/#{application}"  set :deploy_via, :remote_cache  set :use_sudo, false set :shared_children, shared_children + %w{public/uploads}  set :scm, "git"  set :repository, "git@github.com:git_user/#{application}.git"  set :branch, "master"  default_run_options[:pty] = true  ssh_options[:forward_agent] = true   after "deploy", "deploy:cleanup" # keep last 5 releases  namespace :deploy  namespace :assets     task :precompile, :roles => :web       = 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 no asset changes"       end     end      task :symlink, roles: :web       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 %w[start stop restart].each |command|     desc "#{command} unicorn server"      task command, roles: :app, except: {no_release: true}         run "/etc/init.d/unicorn_#{application} #{command}"      end end  task :setup_config, roles: :app      sudo "ln -nfs #{current_path}/config/nginx.conf /etc/nginx/sites-enabled/#{application}"      sudo "ln -nfs #{current_path}/config/unicorn_init.sh /etc/init.d/unicorn_#{application}"      run "mkdir -p #{shared_path}/config"      put file.read("config/database.example.yml"), "#{shared_path}/config/database.yml"      puts "now edit config files in #{shared_path}." end after "deploy:setup", "deploy:setup_config"  task :symlink_config, roles: :app      run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml" end after "deploy:finalize_update", "deploy:symlink_config" desc "make sure local git in sync remote."  task :check_revision, roles: :web     unless `git rev-parse head` == `git rev-parse origin/master`          puts "warning: head not same origin/master"         puts "run `git push` sync changes."          exit     end  end  before "deploy", "deploy:check_revision"  #rake seed task desc "seed database on deployed code" task :seed, :only => {:primary => true}, :except => { :no_release => true }     run "cd #{current_path}; rails_env=#{rails_env} bundle exec rake db:seed" end desc "seed database on deployed code" task :drop, :only => {:primary => true}, :except => { :no_release => true }     run "cd #{current_path}; rails_env=#{rails_env} bundle exec rake db:drop:all"     run "cd #{current_path}; rails_env=#{rails_env} bundle exec rake db:create:all"     run "cd #{current_path}; rails_env=#{rails_env} bundle exec rake db:migrate" end end 

i find answer own

first delete snippet deploy.rb

namespace :assets     task :precompile, :roles => :web       = 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 no asset changes"       end     end      task :symlink, roles: :web       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 

then delete load 'deploy/assets' capfile, , run

cap deploy:cold 

this work without error, on initial deploy. usual "sudo service nginx restart" on server, , add deleter earlier snippets.

finally may have error:

actionview::template::error (file import not found or unreadable: bootstrap. load path: /home/yasinishyn/apps/mkv/releases/20130506160725 (in /home/yasinishyn/apps/mkv/releases/20130506160725/app/assets/stylesheets/bootstrap_and_overrides.css.scss)): 

if don't , change in assets, example add space top of application.css. git add ., git commit .... , git push, , after rerun

cap deploy 

and bamm!! works :)


Comments