89 lines
2.7 KiB
Ruby
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"
|