Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'sidekiq/capistrano'
- set :application, 'mytype.me'
- set :repository, 'https://Mytype@bitbucket.org/Mytype/mytype-web.git'
- set :branch, 'feature_deploy'
- set :host_address, '127.0.0.1'
- ssh_options[:port] = 12222
- ssh_options[:forward_agent] = true
- set :user, 'kirill'
- set :deploy_to, "/var/www/virtual-hosts/#{application}"
- set :rails_env, :production
- set :use_whenever, true
- set :use_sphinx, false
- # Rails assets pipeline
- load "deploy/assets"
- # RVM configuration
- require "rvm/capistrano"
- set :rvm_type, :system
- set :rvm_ruby_string, '1.9.3'
- default_run_options[:pty] = true
- set :scm, :git
- set :deploy_via, :copy
- set :keep_releases, 3
- desc "Make symlink"
- task :make_symlink, :roles => :app do
- run "ln -nfs #{shared_path}/system/uploads #{release_path}/public/uploads"
- end
- after "deploy:create_symlink", :make_symlink
- # Server to deploy
- server host_address, :app, :web, :db, primary: true
- # Removed 'deployment' flag, cause it needs Gemfile.lock exists in repository
- # This can't be done due to Windows problems with nokogiri, ImageMagick etc
- set :bundle_flags, "--quiet"
- require 'bundler/capistrano'
- unicorn_service = "/etc/init.d/unicorn-#{application}"
- namespace :deploy do
- task :restart, :roles => :app, :except => {:no_release => true} do
- run "sudo #{unicorn_service} upgrade"
- end
- end
- namespace :deploy do
- task :sudo_migrate do
- run("cd #{deploy_to}/current && rvmsudo -u www-data bundle exec rake db:migrate RAILS_ENV=#{rails_env}")
- end
- end
- # Sitemap copy
- after "deploy:update_code", "deploy:copy_old_sitemap"
- namespace :deploy do
- task :copy_old_sitemap do
- run "if [ -e #{previous_release}/public/sitemap_index.xml.gz ]; then cp #{previous_release}/public/sitemap* #{current_release}/public/; fi"
- end
- end
- # Backup database
- require 'yaml'
- task :backup_database, :roles => :db do
- if previous_release
- db = YAML::load(ERB.new(IO.read(File.join(File.expand_path('..', File.dirname(__FILE__)), 'config', 'database.yml'))).result)["#{rails_env}"]
- run "export PGPASSWORD='#{db['password']}' && pg_dump --username=#{db['username']} --format=custom --file=#{File.join(previous_release, 'db.backup')} #{db['database']} --host=#{db['host']}"
- end
- end
- task :update_gemfile, :roles => :app do
- run "cat #{current_release}/Gemfile.linux >> #{current_release}/Gemfile"
- end
- set :use_sudo, false
- after :deploy, "deploy:cleanup"
- before "deploy:restart", "deploy:sudo_migrate"
- after "deploy:update_code", :backup_database
- before "bundle:install", :update_gemfile
- after "deploy:assets:precompile" do
- run "cd #{release_path} && bundle exec rake tmp:cache:clear RAILS_ENV=#{rails_env}"
- end
- if use_whenever
- set :whenever_command, "rvm use #{rvm_ruby_string} && bundle exec whenever"
- set :whenever_environment, rails_env
- require "whenever/capistrano"
- end
- if use_sphinx
- require "thinking_sphinx/deploy/capistrano"
- # Sphinx Recipes
- namespace :thinking_sphinx do
- def rake(*tasks)
- rake = fetch(:rake, "rake")
- tasks.each do |t|
- run "if [ -d #{release_path} ]; then cd #{release_path}; else cd #{current_path}; fi; rvmsudo -u www-data #{rake} RAILS_ENV=#{rails_env} #{t}"
- end
- end
- desc "Symlink Sphinx indexes"
- task :symlink_indexes, roles: [:app] do
- run "ln -nfs #{shared_path}/db/sphinx #{release_path}/db/sphinx"
- end
- end
- # Sphinx Steps
- after 'deploy:sudo_migrate', 'thinking_sphinx:stop'
- after 'deploy:sudo_migrate', 'thinking_sphinx:index'
- after 'deploy:sudo_migrate', 'thinking_sphinx:start'
- after 'deploy:finalize_update', 'thinking_sphinx:symlink_indexes'
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement