diff --git a/CHANGELOG.md b/CHANGELOG.md index 8022534a..d84efb37 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ ### Fixed - Reporting version via `resque-scheduler --version` +- Verbosity when run in background with logfile present ## [4.3.0] - 2016-06-26 ### Added diff --git a/lib/resque/scheduler/env.rb b/lib/resque/scheduler/env.rb index e7e75f6d..5ea1df53 100644 --- a/lib/resque/scheduler/env.rb +++ b/lib/resque/scheduler/env.rb @@ -30,13 +30,7 @@ def cleanup def setup_backgrounding return unless options[:background] - # Need to set this here for conditional Process.daemon redirect of - # stderr/stdout to /dev/null - Resque::Scheduler.quiet = if options.key?(:quiet) - !!options[:quiet] - else - true - end + Resque::Scheduler.quiet = background_quiet? unless Process.respond_to?('daemon') abort 'background option is set, which requires ruby >= 1.9' @@ -46,6 +40,12 @@ def setup_backgrounding Resque.redis.client.reconnect end + def background_quiet? + return !!options[:quiet] if options.key?(:quiet) + return false if options.key?(:logfile) + !!options[:background] + end + def setup_pid_file return unless options[:pidfile] diff --git a/test/env_test.rb b/test/env_test.rb index b280100e..ed492584 100644 --- a/test/env_test.rb +++ b/test/env_test.rb @@ -44,4 +44,18 @@ def new_env(options = {}) env.setup assert_equal(false, Resque::Scheduler.dynamic) end + + [ + [{}, true], + [{ quiet: 'nonempty' }, true], + [{ quiet: true }, true], + [{ quiet: false }, false], + [{ logfile: 'some/were.log' }, false] + ].each do |opts, value| + bgopts = opts.merge(background: true) + + test "sets quiet=#{value} with opts=#{bgopts.inspect}" do + assert_equal(value, new_env(bgopts).send(:background_quiet?)) + end + end end