# config valid only for current version of Capistrano lock '3.11.2' set :application, 'SmartsalesSX' set :deploy_user, 'deploy' set :deploy_to, '/home/deploy/apps/SmartsalesSX' # setup repo details #set :scm, :git set :repo_url, 'git@gitlab.com:code2lab/SXRestaurant.git' # setup rbenv. set :rbenv_prefix, "RBENV_ROOT=#{fetch(:rbenv_path)} RBENV_VERSION=#{fetch(:rbenv_ruby)} #{fetch(:rbenv_path)}/bin/rbenv exec" set :rbenv_map_bins, %w{rake gem bundle ruby rails} # how many old releases do we want to keep, not much set :keep_releases, 5 # files we want symlinking to specific entries in shared set :linked_files, %w{config/database.yml config/secrets.yml} # dirs we want symlinking to shared set :linked_dirs, %w{log tmp/pids tmp/puma tmp/cache tmp/sockets vendor/bundle public/system} # what specs should be run before deployment is allowed to # continue, see lib/capistrano/tasks/run_tests.cap set :tests, [] set :pty, true set :puma_jungle_conf, '/etc/puma.conf' set :puma_run_path, '/usr/local/bin/run-puma' set :puma_bind, %w(tcp://0.0.0.0:9393) #set :enable_ssl, true # which config files should be copied by deploy:setup_config # see documentation in lib/capistrano/tasks/setup_config.cap # for details of operations set(:config_files, %w( database.yml log_rotation monit.conf sidekiq_init.sh sidekiq.yml )) # which config files should be made executable after copying # by deploy:setup_config set(:executable_config_files, %w( sidekiq_init.sh )) # files which need to be symlinked to other parts of the # filesystem. For example nginx virtualhosts, log rotation # init scripts etc. The full_app_name variable isn't # available at this point so we use a custom template {{}} # tag and then add it at run time. set(:symlinks, [ { source: "sidekiq_init.sh", link: "/etc/init.d/sidekiq_{{full_app_name}}" }, { source: "log_rotation", link: "/etc/logrotate.d/{{full_app_name}}" }, { source: "monit", link: "/etc/monit/conf.d/{{full_app_name}}.conf" } ]) # this: # http://www.capistranorb.com/documentation/getting-started/flow/ # is worth reading for a quick overview of what tasks are called # and when for `cap stage deploy` namespace :deploy do # make sure we're deploying what we think we're deploying before :deploy, "deploy:check_revision" # only allow a deploy with passing tests to deployed before :deploy, "deploy:run_tests" # compile assets locally then rsync after 'deploy:symlink:shared', 'deploy:compile_assets_locally' after :finishing, 'deploy:cleanup' #nginx will be install in the Load Balancer - No need to deploy there # remove the default nginx configuration as it will tend # to conflict with our configs. #before 'deploy:setup_config', 'nginx:remove_default_vhost' # reload nginx to it will pick up any modified vhosts from # setup_config #after 'deploy:setup_config', 'nginx:reload' # Restart monit so it will pick up any monit configurations # we've added #after 'deploy:setup_config', 'monit:restart' # As of Capistrano 3.1, the `deploy:restart` task is not called # automatically. after 'finishing', 'puma:jungle:restart' end