# config valid for current version and patch releases of Capistrano lock "~> 3.11.0"
set :application, '<application name>'
# git set :repo_url, 'https://<repository>.git' set :deploy_via, :remote_cache
# rbenv set :rbenv_type, :user set :rbenv_ruby, '2.3.3'
# deploy set :deploy_to, "/var/www/#{fetch(:application)}" set :linked_dirs, fetch(:linked_dirs, []).push( 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', 'public/system', 'public/uploads' )
namespace :deploydo desc 'Make sure local git is in sync with remote.' task :check_revisiondo on roles(:app) do unless`git rev-parse HEAD` == `git rev-parse origin/master` puts 'WARNING: HEAD is not the same as origin/master' puts 'Run `git push` to sync changes.' exit end end end
desc 'Initial Deploy' task :initialdo on roles(:app) do before 'deploy:restart', 'puma:start' invoke 'deploy' end end
desc 'Restart application' task :restartdo on roles(:app), in::sequence, wait:5do Rake::Task['puma:restart'].reenable invoke 'puma:restart' end end before :starting, :check_revision after :finishing, :cleanup end
# puma set :puma_threads, [4, 16] set :puma_workers, 0 set :puma_bind, "unix://#{shared_path}/tmp/sockets/#{fetch(:application)}-puma.sock" set :puma_state, "#{shared_path}/tmp/pids/puma.state" set :puma_pid, "#{shared_path}/tmp/pids/puma.pid" set :puma_access_log, "#{release_path}/log/puma.access.log" set :puma_error_log, "#{release_path}/log/puma.error.log" set :puma_preload_app, true set :puma_worker_timeout, nil set :puma_init_active_record, true
namespace :pumado desc 'Create Directories for Puma Pids and Socket' task :make_dirsdo on roles(:app) do execute "mkdir #{shared_path}/tmp/sockets -p" execute "mkdir #{shared_path}/tmp/pids -p" end end before :start, :make_dirs end
config/deploy/production.rb に接続情報を追記
# production.rb
server '<server_name>', roles: %i[app web db] set :user, '<user>' set :stage, :production set :ssh_options, forward_agent:true