Advertisement
KirillGrigorjev

Untitled

Oct 10th, 2016
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Rails 3.61 KB | None | 0 0
  1. require 'sidekiq/capistrano'
  2.  
  3. set :application, 'mytype.me'
  4. set :repository, 'https://Mytype@bitbucket.org/Mytype/mytype-web.git'
  5. set :branch, 'feature_deploy'
  6. set :host_address, '127.0.0.1'
  7. ssh_options[:port] = 12222
  8. ssh_options[:forward_agent] = true
  9. set :user, 'kirill'
  10. set :deploy_to, "/var/www/virtual-hosts/#{application}"
  11. set :rails_env, :production
  12. set :use_whenever, true
  13. set :use_sphinx, false
  14.  
  15. # Rails assets pipeline
  16. load "deploy/assets"
  17.  
  18. # RVM configuration
  19. require "rvm/capistrano"
  20. set :rvm_type, :system
  21. set :rvm_ruby_string, '1.9.3'
  22.  
  23. default_run_options[:pty] = true
  24. set :scm, :git
  25. set :deploy_via, :copy
  26. set :keep_releases, 3
  27.  
  28. desc "Make symlink"
  29. task :make_symlink, :roles => :app do
  30.   run "ln -nfs #{shared_path}/system/uploads #{release_path}/public/uploads"
  31. end
  32.  
  33. after "deploy:create_symlink", :make_symlink
  34.  
  35. # Server to deploy
  36. server host_address, :app, :web, :db, primary: true
  37.  
  38. # Removed 'deployment' flag, cause it needs Gemfile.lock exists in repository
  39. # This can't be done due to Windows problems with nokogiri, ImageMagick etc
  40. set :bundle_flags, "--quiet"
  41. require 'bundler/capistrano'
  42.  
  43. unicorn_service = "/etc/init.d/unicorn-#{application}"
  44. namespace :deploy do
  45.   task :restart, :roles => :app, :except => {:no_release => true} do
  46.     run "sudo #{unicorn_service} upgrade"
  47.   end
  48. end
  49.  
  50. namespace :deploy do
  51.   task :sudo_migrate do
  52.     run("cd #{deploy_to}/current && rvmsudo -u www-data bundle exec rake db:migrate RAILS_ENV=#{rails_env}")
  53.   end
  54. end
  55.  
  56. # Sitemap copy
  57. after "deploy:update_code", "deploy:copy_old_sitemap"
  58. namespace :deploy do
  59.   task :copy_old_sitemap do
  60.     run "if [ -e #{previous_release}/public/sitemap_index.xml.gz ]; then cp #{previous_release}/public/sitemap* #{current_release}/public/; fi"
  61.   end
  62. end
  63.  
  64. # Backup database
  65. require 'yaml'
  66. task :backup_database, :roles => :db do
  67.   if previous_release
  68.     db = YAML::load(ERB.new(IO.read(File.join(File.expand_path('..', File.dirname(__FILE__)), 'config', 'database.yml'))).result)["#{rails_env}"]
  69.     run "export PGPASSWORD='#{db['password']}' && pg_dump --username=#{db['username']} --format=custom --file=#{File.join(previous_release, 'db.backup')} #{db['database']} --host=#{db['host']}"
  70.   end
  71. end
  72.  
  73. task :update_gemfile, :roles => :app do
  74.   run "cat #{current_release}/Gemfile.linux >> #{current_release}/Gemfile"
  75. end
  76.  
  77. set :use_sudo, false
  78. after :deploy, "deploy:cleanup"
  79. before "deploy:restart", "deploy:sudo_migrate"
  80. after "deploy:update_code", :backup_database
  81. before "bundle:install", :update_gemfile
  82.  
  83. after "deploy:assets:precompile" do
  84.   run "cd #{release_path} && bundle exec rake tmp:cache:clear RAILS_ENV=#{rails_env}"
  85. end
  86.  
  87. if use_whenever
  88.   set :whenever_command, "rvm use #{rvm_ruby_string} && bundle exec whenever"
  89.   set :whenever_environment, rails_env
  90.   require "whenever/capistrano"
  91. end
  92.  
  93. if use_sphinx
  94.  
  95.   require "thinking_sphinx/deploy/capistrano"
  96.  
  97. # Sphinx Recipes
  98.   namespace :thinking_sphinx do
  99.  
  100.     def rake(*tasks)
  101.       rake = fetch(:rake, "rake")
  102.       tasks.each do |t|
  103.         run "if [ -d #{release_path} ]; then cd #{release_path}; else cd #{current_path}; fi; rvmsudo -u www-data #{rake} RAILS_ENV=#{rails_env} #{t}"
  104.       end
  105.     end
  106.  
  107.     desc "Symlink Sphinx indexes"
  108.     task :symlink_indexes, roles: [:app] do
  109.       run "ln -nfs #{shared_path}/db/sphinx #{release_path}/db/sphinx"
  110.     end
  111.  
  112.   end
  113.  
  114. # Sphinx Steps
  115.   after 'deploy:sudo_migrate', 'thinking_sphinx:stop'
  116.   after 'deploy:sudo_migrate', 'thinking_sphinx:index'
  117.   after 'deploy:sudo_migrate', 'thinking_sphinx:start'
  118.   after 'deploy:finalize_update', 'thinking_sphinx:symlink_indexes'
  119.  
  120. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement