Files
componentowl-rails-archive/config/deploy.rb

89 lines
2.7 KiB
Ruby

set :stages, %w(production)
set :default_stage, "production"
require 'capistrano/ext/multistage'
rails_env = fetch(:rails_env, "production")
after "deploy", "deploy:cleanup"
after "deploy:migrations", "deploy:cleanup"
after "deploy:migrate", "deploy:restart"
after "deploy:update_code", "symlink_files", "symlink_database_yml", "symlink_blog"
after "deploy:update_code", "install_gems"
after "deploy:update_code", "db:insert_required_data"
task :symlink_files, :roles => [:app, :db] do
run "ln -nfs #{shared_path}/files #{release_path}/public/files"
end
task :symlink_blog, :roles => [:app, :db] do
run "ln -nfs #{shared_path}/blog #{release_path}/public/blog"
end
task :install_gems, :roles => [:app, :db] do
run "cd #{latest_release}; rake gems:install"
end
task :symlink_database_yml, :roles => [:app, :db] do
run "ln -nfs #{shared_path}/config/database.yml #{release_path}/config/database.yml"
end
task :symlink_htaccess, :roles => [:app, :db] do
run "ln -nfs #{shared_path}/config/.htaccess #{release_path}/public/.htaccess"
end
namespace :deploy do
desc "Restart app"
task :restart, :roles => :app do
run "cd #{current_path} && chmod 755 #{chmod755}"
run "kill -s USR2 `cat /tmp/componentowl.com.pid`"
end
desc "Update the crontab file"
task :update_crontab, :roles => :cron, :only => { :primary => true } do
run "cd #{current_path} && whenever --update-crontab #{application} --set 'environment=production&pwd=#{current_path}'"
end
desc "Recreate symlink"
task :resymlink, :roles => :app do
run "rm -f #{current_path} && ln -s #{release_path} #{current_path}"
end
desc "Upload assets to CloudFront"
task :assets do
rails_env = fetch(:rails_env, "production")
run "cd #{release_path} && rake RAILS_ENV=#{rails_env} dextronet_core:assets_to_cloudfront"
end
end
namespace :db do
desc "Dump DB"
task :dump, :roles => :db, :only => { :primary => true } do
run "cd #{latest_release}; rake iquest:db:dump OUTPUT_DIR=#{shared_path}/db RAILS_ENV=production"
end
desc "Insert required data"
task :insert_required_data, :roles => :db, :only => { :primary => true } do
rails_env = fetch(:rails_env, "production")
run "cd #{latest_release}; rake RAILS_ENV=#{rails_env} dextronet_core:import:all"
end
end
namespace :less do
desc 'Updates the stylesheets generated by LESS CSS'
task :update do
run "cd #{release_path} && rake less:update RAILS_ENV=#{rails_env}"
end
end
namespace :asset do
namespace :packager do
desc "Build all assets"
task :build_all do
run "cd #{release_path} && rake asset:packager:build_all"
end
end
end
after "deploy:update_code", "asset:packager:build_all"
before "asset:packager:build_all", "less:update"
#after "asset:packager:build_all", "deploy:assets"