require ‘mina/bundler’ require ‘mina/rails’
namespace :ridgepole do
set_default :ridgepole_env, -> { fetch(:rails_env, 'production') } set_default :ridgepole_config, -> { "#{deploy_to}/#{shared_path}/config/database.yml" } set_default :ridgepole_schemafile,-> { "Schemafile" } set_default :ridgepole_options, -> { "" } set_default :ridgepole_cmd, -> { "#{bundle_prefix} ridgepole" } desc 'apply ridgepole' task :apply => :environment do options ||= ridgepole_options.kind_of?(Array) ? ridgepole_options.join(' ') : ridgepole_options.to_s queue! %[ echo "-----> Applying schema." if [ -f '#{deploy_to}/#{lock_file}' ]; then #{ridgepole_cmd} -E #{ridgepole_env} --config #{ridgepole_config} --file #{ridgepole_schemafile} --apply #{options} else cd #{deploy_to}/#{current_path} && #{ridgepole_cmd} -E #{ridgepole_env} --config #{ridgepole_config} --file #{ridgepole_schemafile} --apply #{options} fi ] end desc 'apply dry-run ridgepole' task :apply_dryrun => :environment do options ||= ridgepole_options.kind_of?(Array) ? ridgepole_options.join(' ') : ridgepole_options.to_s queue! %[ echo "-----> Applying schema.(dry-run)" if [ -f '#{deploy_to}/#{lock_file}' ]; then #{ridgepole_cmd} -E #{ridgepole_env} --config #{ridgepole_config} --file #{ridgepole_schemafile} --apply --dry-run #{options} else cd #{deploy_to}/#{current_path} && #{ridgepole_cmd} -E #{ridgepole_env} --config #{ridgepole_config} --file #{ridgepole_schemafile} --apply --dry-run #{options} fi ] end desc 'export ridgepole' task :export => :environment do options ||= ridgepole_options.kind_of?(Array) ? ridgepole_options.join(' ') : ridgepole_options.to_s queue! %[ echo "-----> Export Schema from database." if [ -f '#{deploy_to}/#{lock_file}' ]; then #{ridgepole_cmd} -E #{ridgepole_env} --config #{ridgepole_config} --export #{options} else cd #{deploy_to}/#{current_path} && #{ridgepole_cmd} -E #{ridgepole_env} --config #{ridgepole_config} --export #{options} fi ] end
end