From 16a8f57be7531215be087a8b02d1ebbced91ecd4 Mon Sep 17 00:00:00 2001 From: Dan Barber Date: Wed, 19 Aug 2015 12:17:25 +0100 Subject: [PATCH] Attempt to use foreman to export init script. --- Gemfile | 5 +++-- Gemfile.lock | 7 +++--- config/deploy.rb | 55 ++++++++++++++++++++++++++++++++++++++++-------- 3 files changed, 52 insertions(+), 15 deletions(-) diff --git a/Gemfile b/Gemfile index b6122da..43481de 100644 --- a/Gemfile +++ b/Gemfile @@ -24,7 +24,6 @@ gem 'capistrano' gem 'capistrano-rbenv' gem 'capistrano-bundler' gem 'capistrano-rails' -gem 'capistrano-foreman' # To use debugger # gem 'ruby-debug' @@ -65,13 +64,15 @@ group :test do end group :production do - gem 'foreman' gem 'puma' gem 'rails_12factor' end gem 'newrelic_rpm' +gem 'foreman' +gem 'foreman-export-initscript' + gem 'pg' gem 'devise' gem 'simple_form' diff --git a/Gemfile.lock b/Gemfile.lock index 508dce4..3602aaa 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -53,9 +53,6 @@ GEM capistrano-bundler (1.1.4) capistrano (~> 3.1) sshkit (~> 1.2) - capistrano-foreman (1.2.0) - capistrano (~> 3.1) - capistrano-bundler (~> 1.1) capistrano-rails (1.1.3) capistrano (~> 3.1) capistrano-bundler (~> 1.1) @@ -132,6 +129,8 @@ GEM nokogiri (~> 1.5, >= 1.5.11) foreman (0.78.0) thor (~> 0.19.1) + foreman-export-initscript (0.0.1) + foreman formatador (0.2.5) haml (4.0.7) tilt @@ -292,7 +291,6 @@ DEPENDENCIES bourbon capistrano capistrano-bundler - capistrano-foreman capistrano-rails capistrano-rbenv capybara-screenshot @@ -305,6 +303,7 @@ DEPENDENCIES factory_girl_rails fivemat foreman + foreman-export-initscript haml hpricot jquery-rails diff --git a/config/deploy.rb b/config/deploy.rb index cfb27ec..4e3d0d6 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -1,3 +1,5 @@ +require 'capistrano/foreman' + # config valid only for current version of Capistrano lock '3.4.0' @@ -37,15 +39,6 @@ set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', ' set :rbenv_type, :user set :rbenv_ruby, '2.2.1' -set :foreman_use_sudo, false # Set to :rbenv for rbenv sudo, :rvm for rvmsudo or true for normal sudo -set :foreman_roles, :all -set :foreman_template, 'systemd' -set :foreman_export_path, File.join(Dir.home, '.init') -set :foreman_options, { - app: application, - log: File.join(shared_path, 'log') -} - namespace :deploy do after :restart, :clear_cache do @@ -58,3 +51,47 @@ namespace :deploy do end end + +namespace :foreman do + desc 'Export the Procfile to Debian systemd scripts' + task :export do + on roles(:app) do |host| + log_path = shared_path.join('log') + environment_path = fetch(:foreman_env) + within release_path do + as :root do + execute :sudo, "foreman export initscript /etc/init.d/ -a #{fetch(:application)} -u #{host.user} -l #{log_path} -e #{environment_path}" + end + end + end + end + + desc 'Start the application services' + task :start do + on roles(:app) do |host| + as :root do + execute :start, fetch(:application) + end + end + end + + desc 'Stop the application services' + task :stop do + on roles(:app) do |host| + as :root do + execute :stop, fetch(:application) + end + end + end + + desc 'Restart the application services' + task :restart do + on roles(:app) do |host| + as :root do + execute :service, "#{fetch(:application)} start || service #{fetch(:application)} restart" + end + end + end + + before 'deploy:publishing', 'foreman:export' +end