copy config files and bundle install --local before deploy:assets:precompile
[arvados.git] / config / deploy.rb
1 set :application, "orvos-server"
2 set :domain,      "controller.van"
3 set :deploy_to,   "/var/www/9ujm1.orvosapi.com"
4 role :web, "controller.van"
5 role :app, "controller.van"
6 role :db, "controller.van", :primary=>true
7 set :scm,         :git
8 set :repository,  "git@git.clinicalfuture.com:orvos-server.git"
9 set :rails_env,   "production"
10 set :config_files, ['database.yml']
11 set :git_enable_submodules, true
12 set :rvm_ruby_string, '1.9.3'
13 require "rvm/capistrano"
14 load "deploy/assets"
15 default_run_options[:shell] = '/bin/bash --login'
16 #default_run_options[:shell] = '/bin/bash'
17
18 set :passenger_port, 3000
19 #set :passenger_cmd, "#{bundle_cmd} exec passenger"
20 set :passenger_cmd, "passenger"
21
22 ssh_options[:forward_agent] = true
23 ssh_options[:user] = 'root'
24
25 desc "Clean up old releases"
26 set :keep_releases, 5
27 before("deploy:cleanup") { set :use_sudo, false }
28
29 before "deploy:assets:precompile", "deploy:copy_files", :roles => :app
30 after "deploy:copy_files", "deploy:bundle_install", :roles => :app
31 after "deploy:update", "deploy:migrate", :roles => :db
32 after :deploy, 'deploy:cleanup', :roles => :app
33
34 namespace :deploy do
35   desc "Put a few files in place, ensure correct file ownership"
36   task :copy_files, :roles => :app,  :except => { :no_release => true } do
37     # Copy a few files/make a few symlinks
38     run "cp /home/passenger/orvos-server/database.yml #{release_path}/config/database.yml"
39     run "cp /home/passenger/orvos-server/secret_token.rb #{release_path}/config/initializers/secret_token.rb"
40     run "cp /home/passenger/orvos-server/production.rb #{release_path}/config/environments/production.rb"
41     # Ensure correct ownership of a few files
42     run "chown www-data:www-data #{release_path}/config/environment.rb"
43     run "chown www-data:www-data #{release_path}/config.ru"
44     run "chown www-data:www-data #{release_path}/config/database.yml"
45     # This is for the drb server
46     run "touch #{release_path}/Gemfile.lock"
47     run "chown www-data:www-data #{release_path}/Gemfile.lock"
48     # Keep track of the git commit used for this deploy
49     # This is used by the lib/add_debug_info.rb middleware, which injects it in the
50     # environment.
51     run "cd #{release_path}; /usr/bin/git rev-parse HEAD > #{release_path}/git-commit.version"
52   end
53
54   # desc "Install new gems if necessary"
55   task :bundle_install, :roles => :app,  :except => { :no_release => true } do
56     run "cd #{release_path} && bundle install --local"
57   end
58
59   desc "Restarting mod_rails with restart.txt"
60 #  task :restart, :roles => :app, :except => { :no_release => true } do
61 #    # Tell passenger to restart.
62 #    #run "touch #{release_path}/tmp/restart.txt"
63 #    run "cd #{release_path}; passenger stop"
64 #    run "cd #{release_path}; passenger start -a 127.0.0.1 -p 3000 -d"
65 #    # Tell DRB to restart.
66 #    #run "/usr/sbin/monit restart mypg_server.rb"
67 #  end 
68 #  [:start, :stop].each do |t| 
69 #    desc "#{t} task is a no-op with mod_rails"
70 #    task t, :roles => :app do ; end 
71 #  end 
72
73   # Use standalone passenger because we also run gps on this box, on a different ruby/passenger version...
74   task :start, :roles => :app, :except => { :no_release => true } do
75     run "cd #{release_path} && #{passenger_cmd} start -e #{rails_env} -p #{passenger_port} -d"
76   end
77
78   task :stop, :roles => :app, :except => { :no_release => true } do
79     run "cd #{release_path} && #{passenger_cmd} stop -p #{passenger_port}"
80   end
81
82   task :restart, :roles => :app, :except => { :no_release => true } do
83     run <<-CMD
84       if [[ -f #{release_path}/tmp/pids/passenger.#{passenger_port}.pid ]]; then
85         cd #{release_path} && #{passenger_cmd} stop -p #{passenger_port};
86       fi
87     CMD
88
89     run "cd #{release_path} && #{passenger_cmd} start -e #{rails_env} -p #{passenger_port} -d"
90   end
91
92 end