lib/capistrano/tasks/monit.rake in capistrano-sidekiq-0.20.0 vs lib/capistrano/tasks/monit.rake in capistrano-sidekiq-1.0.0

- old
+ new

@@ -3,10 +3,11 @@ set :sidekiq_monit_conf_dir, '/etc/monit/conf.d' set :sidekiq_monit_use_sudo, true set :monit_bin, '/usr/bin/monit' set :sidekiq_monit_default_hooks, true set :sidekiq_monit_templates_path, 'config/deploy/templates' + set :sidekiq_monit_group, nil end end namespace :deploy do before :starting, :check_sidekiq_monit_hooks do @@ -24,11 +25,11 @@ after 'deploy:published', 'sidekiq:monit:monitor' end desc 'Config Sidekiq monit-service' task :config do - on roles(fetch(:sidekiq_role)) do |role| + on roles(fetch(:sidekiq_roles)) do |role| @role = role upload_sidekiq_template 'sidekiq_monit', "#{fetch(:tmp_dir)}/monit.conf", @role mv_command = "mv #{fetch(:tmp_dir)}/monit.conf #{fetch(:sidekiq_monit_conf_dir)}/#{sidekiq_service_name}.conf" sudo_if_needed mv_command @@ -37,11 +38,11 @@ end end desc 'Monitor Sidekiq monit-service' task :monitor do - on roles(fetch(:sidekiq_role)) do + on roles(fetch(:sidekiq_roles)) do fetch(:sidekiq_processes).times do |idx| begin sudo_if_needed "#{fetch(:monit_bin)} monitor #{sidekiq_service_name(idx)}" rescue invoke 'sidekiq:monit:config' @@ -51,11 +52,11 @@ end end desc 'Unmonitor Sidekiq monit-service' task :unmonitor do - on roles(fetch(:sidekiq_role)) do + on roles(fetch(:sidekiq_roles)) do fetch(:sidekiq_processes).times do |idx| begin sudo_if_needed "#{fetch(:monit_bin)} unmonitor #{sidekiq_service_name(idx)}" rescue # no worries here @@ -64,37 +65,37 @@ end end desc 'Start Sidekiq monit-service' task :start do - on roles(fetch(:sidekiq_role)) do + on roles(fetch(:sidekiq_roles)) do fetch(:sidekiq_processes).times do |idx| sudo_if_needed "#{fetch(:monit_bin)} start #{sidekiq_service_name(idx)}" end end end desc 'Stop Sidekiq monit-service' task :stop do - on roles(fetch(:sidekiq_role)) do + on roles(fetch(:sidekiq_roles)) do fetch(:sidekiq_processes).times do |idx| sudo_if_needed "#{fetch(:monit_bin)} stop #{sidekiq_service_name(idx)}" end end end desc 'Restart Sidekiq monit-service' task :restart do - on roles(fetch(:sidekiq_role)) do + on roles(fetch(:sidekiq_roles)) do fetch(:sidekiq_processes).times do |idx| sudo_if_needed"#{fetch(:monit_bin)} restart #{sidekiq_service_name(idx)}" end end end def sidekiq_service_name(index=nil) - fetch(:sidekiq_service_name, "sidekiq_#{fetch(:application)}_#{fetch(:sidekiq_env)}") + index.to_s + fetch(:sidekiq_service_name, "sidekiq_#{fetch(:application)}_#{fetch(:sidekiq_env)}") + (index ? "_#{index}" : '') end def sidekiq_config if fetch(:sidekiq_config) "--config #{fetch(:sidekiq_config)}" @@ -135,7 +136,32 @@ def use_sudo? fetch(:sidekiq_monit_use_sudo) end + def upload_sidekiq_template(from, to, role) + template = sidekiq_template(from, role) + upload!(StringIO.new(ERB.new(template).result(binding)), to) + end + + def sidekiq_template(name, role) + local_template_directory = fetch(:sidekiq_monit_templates_path) + + search_paths = [ + "#{name}-#{role.hostname}-#{fetch(:stage)}.erb", + "#{name}-#{role.hostname}.erb", + "#{name}-#{fetch(:stage)}.erb", + "#{name}.erb" + ].map { |filename| File.join(local_template_directory, filename) } + + global_search_path = File.expand_path( + File.join(*%w[.. .. .. generators capistrano sidekiq monit templates], "#{name}.conf.erb"), + __FILE__ + ) + + search_paths << global_search_path + + template_path = search_paths.detect { |path| File.file?(path) } + File.read(template_path) + end end end