lib/capistrano/tasks/nginx.rake in capistrano3-nginx-2.1.6 vs lib/capistrano/tasks/nginx.rake in capistrano3-nginx-3.0
- old
+ new
@@ -1,55 +1,17 @@
-namespace :load do
- task :defaults do
- set :nginx_sudo_paths, -> { [:nginx_log_path, :nginx_sites_enabled_dir, :nginx_sites_available_dir] }
- set :nginx_sudo_tasks, -> { ['nginx:start', 'nginx:stop', 'nginx:restart', 'nginx:reload', 'nginx:configtest', 'nginx:site:add', 'nginx:site:disable', 'nginx:site:enable', 'nginx:site:remove' ] }
- set :nginx_log_path, -> { "#{shared_path}/log" }
- set :nginx_service_path, -> { 'service nginx' }
- set :nginx_static_dir, -> { "public" }
- set :nginx_application_name, -> { fetch(:application) }
- set :nginx_sites_enabled_dir, -> { "/etc/nginx/sites-enabled" }
- set :nginx_sites_available_dir, -> { "/etc/nginx/sites-available" }
- set :nginx_roles, -> { :web }
- set :nginx_template, -> { :default }
- set :nginx_use_ssl, -> { false }
- set :nginx_ssl_certificate, -> { "#{fetch(:application)}.crt" }
- set :nginx_ssl_certificate_path, -> { '/etc/ssl/certs' }
- set :nginx_ssl_certificate_key, -> { "#{fetch(:application)}.key" }
- set :nginx_ssl_certificate_key_path, -> { '/etc/ssl/private' }
- set :app_server, -> { true }
- end
-end
+git_plugin = self
namespace :nginx do
-
- # prepend :sudo to list if arguments if :key is in :nginx_use_sudo_for list
- def add_sudo_if_required argument_list, *keys
- keys.each do | key |
- if use_sudo? key
- argument_list.unshift(:sudo)
- break
- end
- end
- end
-
- def use_sudo? key
- return (fetch(:nginx_sudo_tasks).include?(key) || fetch(:nginx_sudo_paths).include?(key))
- end
-
- def valid_nginx_config?
- test_sudo = use_sudo?('nginx:configtest') ? 'sudo ' : ''
- nginx_service = fetch(:nginx_service_path)
- test "[ $(#{test_sudo}#{nginx_service} configtest | grep -c 'fail') -eq 0 ]"
- end
-
task :load_vars do
set :sites_available, -> { fetch(:nginx_sites_available_dir) }
set :sites_enabled, -> { fetch(:nginx_sites_enabled_dir) }
set :enabled_application, -> { File.join(fetch(:sites_enabled), fetch(:nginx_application_name)) }
set :available_application, -> { File.join(fetch(:sites_available), fetch(:nginx_application_name)) }
end
+
+
# validate_sudo_settings
task :validate_user_settings do
path_and_dir_keys = [:nginx_log_path, :nginx_sites_enabled_dir, :nginx_sites_available_dir]
nginx_task_keys = ['nginx:start', 'nginx:stop', 'nginx:restart', 'nginx:reload', 'nginx:configtest', 'nginx:site:add', 'nginx:site:disable', 'nginx:site:enable', 'nginx:site:remove' ]
@@ -62,31 +24,35 @@
end
desc "Configtest nginx service"
task :configtest do
on release_roles fetch(:nginx_roles) do
- abort("nginx configuration is invalid! (Make sure nginx configuration files are readable and correctly formated.)") unless valid_nginx_config?
+ nginx_service = fetch(:nginx_service_path)
+ execute(
+ "sudo #{nginx_service} configtest",
+ interaction_handler: PasswdInteractionHandler.new
+ )
end
end
%w[start stop restart reload].each do |command|
desc "#{command.capitalize} nginx service"
task command => ['nginx:validate_user_settings'] do
on release_roles fetch(:nginx_roles) do
arguments = fetch(:nginx_service_path), command
- add_sudo_if_required arguments, "nginx:#{command}"
- execute *arguments
+ git_plugin.add_sudo_if_required arguments, "nginx:#{command}"
+ execute *arguments, interaction_handler: PasswdInteractionHandler.new
end
end
before "nginx:#{command}", 'nginx:configtest' unless command == 'stop'
end
task :create_log_paths do
on release_roles fetch(:nginx_roles) do
arguments = :mkdir, '-pv', fetch(:nginx_log_path)
add_sudo_if_required arguments, :nginx_log_path
- execute *arguments
+ execute *arguments, interaction_handler: PasswdInteractionHandler.new
end
end
after 'deploy:check', 'nginx:create_log_paths'
desc 'Compress JS and CSS with gzip'
@@ -108,11 +74,11 @@
config_file = File.expand_path('../../../../templates/nginx.conf.erb', __FILE__)
end
config = ERB.new(File.read(config_file)).result(binding)
upload! StringIO.new(config), '/tmp/nginx.conf'
arguments = :mv, '/tmp/nginx.conf', fetch(:nginx_application_name)
- add_sudo_if_required arguments, 'nginx:sites:add', :nginx_sites_available_dir
+ git_plugin.add_sudo_if_required arguments, 'nginx:sites:add', :nginx_sites_available_dir
execute *arguments
end
end
end
@@ -120,11 +86,11 @@
task :enable => ['nginx:load_vars', 'nginx:validate_user_settings'] do
on release_roles fetch(:nginx_roles) do
if test "! [ -h #{fetch(:enabled_application)} ]"
within fetch(:sites_enabled) do
arguments = :ln, '-nfs', fetch(:available_application), fetch(:enabled_application)
- add_sudo_if_required arguments, 'nginx:sites:enable', :nginx_sites_enabled_dir
+ git_plugin.add_sudo_if_required arguments, 'nginx:sites:enable', :nginx_sites_enabled_dir
execute *arguments
end
end
end
end
@@ -133,11 +99,11 @@
task :disable => ['nginx:load_vars', 'nginx:validate_user_settings'] do
on release_roles fetch(:nginx_roles) do
if test "[ -f #{fetch(:enabled_application)} ]"
within fetch(:sites_enabled) do
arguments = :rm, '-f', fetch(:nginx_application_name)
- add_sudo_if_required arguments, 'nginx:sites:disable', :nginx_sites_enabled_dir
+ git_plugin.add_sudo_if_required arguments, 'nginx:sites:disable', :nginx_sites_enabled_dir
execute *arguments
end
end
end
end
@@ -146,13 +112,14 @@
task :remove => ['nginx:load_vars', 'nginx:validate_user_settings'] do
on release_roles fetch(:nginx_roles) do
if test "[ -f #{fetch(:available_application)} ]"
within fetch(:sites_available) do
arguments = :rm, fetch(:nginx_application_name)
- add_sudo_if_required arguments, 'nginx:sites:remove', :nginx_sites_available_dir
+ git_plugin.add_sudo_if_required arguments, 'nginx:sites:remove', :nginx_sites_available_dir
execute *arguments
end
end
end
end
end
+
end