diff --git a/lib/resque/integration/configuration.rb b/lib/resque/integration/configuration.rb index 78522e6..9375eaa 100644 --- a/lib/resque/integration/configuration.rb +++ b/lib/resque/integration/configuration.rb @@ -106,6 +106,17 @@ def failure_notifier @notifier ||= Notifier.new(self['failure.notifier']) end + # Returns flag for cleaning on shutdown see https://github.com/resque/resque/issues/1167 + def run_at_exit_hooks? + value = self['resque.run_at_exit_hooks'] + + if value.is_a?(String) && %w(n no false off disabled).include?(value) + value = false + end + + value.nil? ? true : value + end + # Returns Resque polling interval def interval (self['resque.interval'] || 5).to_i diff --git a/lib/resque/integration/tasks/hooks.rake b/lib/resque/integration/tasks/hooks.rake index 996c9cb..e4519b4 100644 --- a/lib/resque/integration/tasks/hooks.rake +++ b/lib/resque/integration/tasks/hooks.rake @@ -43,5 +43,9 @@ namespace :resque do if Resque.config.resque_scheduler? && Resque.config.schedule_exists? Resque.schedule = YAML.load_file(Resque.config.schedule_file) end + + if Resque.config.run_at_exit_hooks? && ENV['RUN_AT_EXIT_HOOKS'].nil? + ENV['RUN_AT_EXIT_HOOKS'] = '1' + end end end diff --git a/spec/resque/integration/configuration_spec.rb b/spec/resque/integration/configuration_spec.rb index 9a07fa1..4a5ec39 100644 --- a/spec/resque/integration/configuration_spec.rb +++ b/spec/resque/integration/configuration_spec.rb @@ -41,6 +41,18 @@ it { expect(config.resque_scheduler?).to be_false } end end + + describe '#run_at_exit_hooks?' do + context 'when default' do + it { expect(config.resque_scheduler?).to be_true } + end + + context 'when defined' do + let(:config_yaml) { {'resque' => {'run_at_exit_hooks' => 'no'}} } + + it { expect(config.run_at_exit_hooks?).to be_false } + end + end end describe Resque::Integration::Configuration::Notifier do