PageRenderTime 66ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/config/deploy.rb

https://bitbucket.org/seatecnologia/mj-concurso-sindec
Ruby | 124 lines | 83 code | 25 blank | 16 comment | 1 complexity | 77902cdc6e00d32ce463ed7c5a087c1e MD5 | raw file
  1. #RVM STUFF
  2. #$:.unshift(File.expand_path('./lib', ENV['rvm_path'])) # Add RVM's lib directory to the load path.
  3. require "rvm/capistrano" # Load RVM's capistrano plugin.
  4. #set :rvm_ruby_string, 'ree@rails3' # Or whatever env you want it to run in.
  5. set :rvm_type, :user
  6. # bundle:install after deploy
  7. require "bundler/capistrano"
  8. set :application, "Qu?o fundo?"
  9. set :repository, "https://bitbucket.org/seatecnologia/mj-concurso-sindec"
  10. set :keep_releases, 3
  11. set :branch, "master"
  12. set :scm, :git
  13. role :web, "192.34.59.233" # Your HTTP server, Apache/etc
  14. role :app, "192.34.59.233" # This may be the same as your `Web` server
  15. role :db, "192.34.59.233", :primary => true
  16. set :user, "sindec"
  17. set :deploy_to, "/home/sindec/mj"
  18. set :scm_username, "escobera"
  19. set :use_sudo, false
  20. set :deploy_via, :remote_cache
  21. set :rails_env, "production"
  22. before 'deploy:assets:precompile', 'db:symlink'
  23. # ==============================
  24. # DB
  25. # ==============================
  26. namespace :db do
  27. desc "Link database.yml"
  28. task :symlink do
  29. run "ln -nsf #{shared_path}/config/database.yml #{current_release}/config/database.yml"
  30. end
  31. desc "Create database"
  32. task :create do
  33. run "cd #{current_release} && RAILS_ENV=#{rails_env} rake db:create"
  34. end
  35. end
  36. # ==============================
  37. # Unicorn
  38. # ==============================
  39. namespace :deploy do
  40. desc "Zero-downtime restart of Unicorn"
  41. task :restart, :except => { :no_release => true } do
  42. run "kill -s USR2 `cat /home/sindec/mj/shared/pids/unicorn.pid`"
  43. end
  44. desc "Start unicorn"
  45. task :start, :except => { :no_release => true } do
  46. run "cd #{current_path} ; bundle exec unicorn_rails -c config/unicorn.rb -E production -D"
  47. end
  48. desc "Stop unicorn"
  49. task :stop, :except => { :no_release => true } do
  50. run "kill -s QUIT `cat /home/sindec/mj/shared/pids/unicorn.pid`"
  51. end
  52. end
  53. # ==============================
  54. # Sockets, pids
  55. # ==============================
  56. namespace :shared_folders do
  57. desc "set shared folders"
  58. task :register_dirs do
  59. set :shared_dirs, %w(sockets pids config)
  60. end
  61. desc "create shared folders"
  62. task :create_dirs, :except => { :no_release => true } do
  63. dirs = shared_dirs.map { |d| File.join(shared_path, d) }
  64. run "mkdir -p #{dirs.join(' ')} && #{try_sudo} chmod g+w #{dirs.join(' ')}"
  65. end
  66. after "uploads:symlink", "shared_folders:create_dirs"
  67. on :start, "shared_folders:register_dirs"
  68. end
  69. # ==============================
  70. # Uploads
  71. # ==============================
  72. namespace :uploads do
  73. desc <<-EOD
  74. Creates the upload folders unless they exist
  75. and sets the proper upload permissions.
  76. EOD
  77. task :setup, :except => { :no_release => true } do
  78. dirs = uploads_dirs.map { |d| File.join(shared_path, d) }
  79. run "#{try_sudo} mkdir -p #{dirs.join(' ')} && #{try_sudo} chmod g+w #{dirs.join(' ')}"
  80. end
  81. desc <<-EOD
  82. [internal] Creates the symlink to uploads shared folder
  83. for the most recently deployed version.
  84. EOD
  85. task :symlink, :except => { :no_release => true } do
  86. run "rm -rf #{release_path}/public/uploads"
  87. run "ln -nfs #{shared_path}/uploads #{release_path}/public/uploads"
  88. end
  89. desc <<-EOD
  90. [internal] Computes uploads directory paths
  91. and registers them in Capistrano environment.
  92. EOD
  93. task :register_dirs do
  94. set :uploads_dirs, %w(uploads)
  95. set :shared_children, fetch(:shared_children) + fetch(:uploads_dirs)
  96. end
  97. after "deploy:finalize_update", "uploads:symlink"
  98. on :start, "uploads:register_dirs"
  99. end