/config/deploy.rb
Ruby | 124 lines | 83 code | 25 blank | 16 comment | 1 complexity | 77902cdc6e00d32ce463ed7c5a087c1e MD5 | raw file
- #RVM STUFF
- #$:.unshift(File.expand_path('./lib', ENV['rvm_path'])) # Add RVM's lib directory to the load path.
- require "rvm/capistrano" # Load RVM's capistrano plugin.
- #set :rvm_ruby_string, 'ree@rails3' # Or whatever env you want it to run in.
- set :rvm_type, :user
- # bundle:install after deploy
- require "bundler/capistrano"
- set :application, "Qu?o fundo?"
- set :repository, "https://bitbucket.org/seatecnologia/mj-concurso-sindec"
- set :keep_releases, 3
- set :branch, "master"
- set :scm, :git
- role :web, "192.34.59.233" # Your HTTP server, Apache/etc
- role :app, "192.34.59.233" # This may be the same as your `Web` server
- role :db, "192.34.59.233", :primary => true
- set :user, "sindec"
- set :deploy_to, "/home/sindec/mj"
- set :scm_username, "escobera"
- set :use_sudo, false
- set :deploy_via, :remote_cache
- set :rails_env, "production"
- before 'deploy:assets:precompile', 'db:symlink'
- # ==============================
- # DB
- # ==============================
- namespace :db do
- desc "Link database.yml"
- task :symlink do
- run "ln -nsf #{shared_path}/config/database.yml #{current_release}/config/database.yml"
- end
- desc "Create database"
- task :create do
- run "cd #{current_release} && RAILS_ENV=#{rails_env} rake db:create"
- end
- end
- # ==============================
- # Unicorn
- # ==============================
- namespace :deploy do
- desc "Zero-downtime restart of Unicorn"
- task :restart, :except => { :no_release => true } do
- run "kill -s USR2 `cat /home/sindec/mj/shared/pids/unicorn.pid`"
- end
- desc "Start unicorn"
- task :start, :except => { :no_release => true } do
- run "cd #{current_path} ; bundle exec unicorn_rails -c config/unicorn.rb -E production -D"
- end
- desc "Stop unicorn"
- task :stop, :except => { :no_release => true } do
- run "kill -s QUIT `cat /home/sindec/mj/shared/pids/unicorn.pid`"
- end
- end
- # ==============================
- # Sockets, pids
- # ==============================
- namespace :shared_folders do
- desc "set shared folders"
- task :register_dirs do
- set :shared_dirs, %w(sockets pids config)
- end
- desc "create shared folders"
- task :create_dirs, :except => { :no_release => true } do
- dirs = shared_dirs.map { |d| File.join(shared_path, d) }
- run "mkdir -p #{dirs.join(' ')} && #{try_sudo} chmod g+w #{dirs.join(' ')}"
- end
- after "uploads:symlink", "shared_folders:create_dirs"
- on :start, "shared_folders:register_dirs"
- end
- # ==============================
- # Uploads
- # ==============================
- namespace :uploads do
- desc <<-EOD
- Creates the upload folders unless they exist
- and sets the proper upload permissions.
- EOD
- task :setup, :except => { :no_release => true } do
- dirs = uploads_dirs.map { |d| File.join(shared_path, d) }
- run "#{try_sudo} mkdir -p #{dirs.join(' ')} && #{try_sudo} chmod g+w #{dirs.join(' ')}"
- end
- desc <<-EOD
- [internal] Creates the symlink to uploads shared folder
- for the most recently deployed version.
- EOD
- task :symlink, :except => { :no_release => true } do
- run "rm -rf #{release_path}/public/uploads"
- run "ln -nfs #{shared_path}/uploads #{release_path}/public/uploads"
- end
- desc <<-EOD
- [internal] Computes uploads directory paths
- and registers them in Capistrano environment.
- EOD
- task :register_dirs do
- set :uploads_dirs, %w(uploads)
- set :shared_children, fetch(:shared_children) + fetch(:uploads_dirs)
- end
- after "deploy:finalize_update", "uploads:symlink"
- on :start, "uploads:register_dirs"
- end