diff --git a/Capfile b/Capfile index 080238a..6b297ad 100644 --- a/Capfile +++ b/Capfile @@ -1,25 +1,11 @@ # Load DSL and Setup Up Stages require 'capistrano/setup' - -# Includes default deployment tasks require 'capistrano/deploy' -# Includes tasks from other gems included in your Gemfile -# -# For documentation on these, see for example: -# -# https://github.com/capistrano/rvm -# https://github.com/capistrano/rbenv -# https://github.com/capistrano/chruby -# https://github.com/capistrano/bundler -# https://github.com/capistrano/rails -# -# require 'capistrano/rvm' -# require 'capistrano/rbenv' -# require 'capistrano/chruby' -# require 'capistrano/bundler' -# require 'capistrano/rails/assets' -# require 'capistrano/rails/migrations' +require 'capistrano/rails' +require 'capistrano/bundler' +require 'capistrano/rvm' +require 'capistrano/puma' # Loads custom tasks from `lib/capistrano/tasks' if you have any defined. Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r } diff --git a/config/deploy.rb b/config/deploy.rb index 4118eda..99939d8 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -7,6 +7,9 @@ set :user, 'deployer' set :puma_threads, [4, 16] set :puma_workers, 0 +# Default branch is :master +ask :branch, proc { `git rev-parse --abbrev-ref HEAD`.chomp }.call + # Don't change these unless you know what you're doing set :pty, true set :use_sudo, false diff --git a/config/deploy.rb.2 b/config/deploy.rb.2 new file mode 100644 index 0000000..4118eda --- /dev/null +++ b/config/deploy.rb.2 @@ -0,0 +1,84 @@ +# Change these +server '150.165.204.80', port: 22, password: 'l1br4s-l1v3', roles: [:web, :app, :db], primary: true + +set :repo_url, 'git@git.lavid.ufpb.br:vlibras-web2.git' +set :application, 'vlibras-web2' +set :user, 'deployer' +set :puma_threads, [4, 16] +set :puma_workers, 0 + +# Don't change these unless you know what you're doing +set :pty, true +set :use_sudo, false +set :stage, :production +set :deploy_via, :remote_cache +set :deploy_to, "/home/#{fetch(:user)}/apps/#{fetch(:application)}" +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.error.log" +set :puma_error_log, "#{release_path}/log/puma.access.log" +set :ssh_options, { forward_agent: true, user: fetch(:user), keys: %w(~/.ssh/id_rsa.pub) } +set :puma_preload_app, true +set :puma_worker_timeout, nil +set :puma_init_active_record, true # Change to false when not using ActiveRecord + +## Defaults: +# set :scm, :git +# set :branch, :master +# set :format, :pretty +# set :log_level, :debug +# set :keep_releases, 5 + +## Linked Files & Directories (Default None): +# set :linked_files, %w{config/database.yml} +# set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system} + +namespace :puma do + desc 'Create Directories for Puma Pids and Socket' + task :make_dirs do + 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 + +namespace :deploy do + desc "Make sure local git is in sync with remote." + task :check_revision do + 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 :initial do + on roles(:app) do + before 'deploy:restart', 'puma:start' + invoke 'deploy' + end + end + + desc 'Restart application' + task :restart do + on roles(:app), in: :sequence, wait: 5 do + invoke 'puma:restart' + end + end + + before :starting, :check_revision + after :finishing, :compile_assets + after :finishing, :cleanup + after :finishing, :restart +end + +# ps aux | grep puma # Get puma pid +# kill -s SIGUSR2 pid # Restart puma +# kill -s SIGTERM pid # Stop puma diff --git a/config/deploy/production.rb b/config/deploy/production.rb index e664a6c..dac6857 100644 --- a/config/deploy/production.rb +++ b/config/deploy/production.rb @@ -4,9 +4,9 @@ # is considered to be the first unless any hosts have the primary # property set. Don't declare `role :all`, it's a meta role. -role :app, %w{deploy@example.com} -role :web, %w{deploy@example.com} -role :db, %w{deploy@example.com} +# role :app, %w{deploy@example.com} +# role :web, %w{deploy@example.com} +# role :db, %w{deploy@example.com} # Extended Server Syntax @@ -15,7 +15,7 @@ role :db, %w{deploy@example.com} # server list. The second argument is a, or duck-types, Hash and is # used to set extended properties on the server. -server 'example.com', user: 'deploy', roles: %w{web app}, my_property: :my_value +# server 'example.com', user: 'deploy', roles: %w{web app}, my_property: :my_value # Custom SSH Options -- libgit2 0.21.2