저는 Rails 3.2에 capistrano v2를 사용하고 있습니다. deploy.rb에 bundler 태스크가 있습니다. 내가 cap deploy:rollback
을 실행하면capistrano on_rollback을 호출하지 않습니다.
# Bundler tasks
namespace :bundler do
desc "Create a symlink"
task :create_symlink, :roles => :app do
shared_dir = File.join(shared_path, 'bundle')
release_dir = File.join(release_path, '.bundle')
run("mkdir -p #{shared_dir} && ln -s #{shared_dir} #{release_dir}")
end
desc "Install required gems"
task :install, :roles => :app do
puts "New Release"
run "cd #{release_path} && #{bundle_path} install"
on_rollback do
if previous_release
puts "Rollback"
run "cd #{previous_release} && #{bundle_path} install"
else
logger.important "no previous release to rollback to, rollback of bundler:install skipped"
end
end
end
desc "Run bundler on new release"
task :bundle_new_release, :roles => :db do
bundler.create_symlink
bundler.install
end
end
after "deploy:update_code", "bundler:bundle_new_release"
after "deploy:rollback:revision", "bundler:install"
그것은이 CD {release_path}를 실행하려고하여 on_rollback 코드를 실행하지 않습니다.
이 예제는 http://kazjote.eu/2010/08/04/bundler-and-capistrano-the-right-way에서 가져 왔습니다.
Capistrano는'cap db : rollback'보다는'cap deploy rollback'을 호출 할 때만 on_rollback 블록을 실행할 수 있다고 생각합니다. db : rollback 작업은 어떻게 생겼습니까? – johnsorrentino
죄송합니다. 배포를 실행했습니다 : 롤백, 내 기록 만 보았습니다. – map7