Hello community, here is the log from the commit of package rubygem-delayed_job for openSUSE:Factory checked in at 2017-06-02 10:33:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/rubygem-delayed_job (Old) and /work/SRC/openSUSE:Factory/.rubygem-delayed_job.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "rubygem-delayed_job" Fri Jun 2 10:33:14 2017 rev:13 rq:499968 version:4.1.3 Changes: -------- --- /work/SRC/openSUSE:Factory/rubygem-delayed_job/rubygem-delayed_job.changes 2016-06-12 18:54:29.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.rubygem-delayed_job.new/rubygem-delayed_job.changes 2017-06-02 10:34:03.185794599 +0200 @@ -1,0 +2,15 @@ +Tue May 30 05:11:16 UTC 2017 - co...@suse.com + +- updated to version 4.1.3 + see installed CHANGELOG.md + + 4.1.3 - 2017-05-26 + ================= + * Don't mutate the options hash (#877) + * Log an error message when a deserialization error occurs (#894) + * Adding the queue name to the log output (#917) + * Don't include ClassMethods with MessageSending (#924) + * Fix YAML deserialization error if original object is soft-deleted (#947) + * Add support for Rails 5.1 (#982) + +------------------------------------------------------------------- Old: ---- delayed_job-4.1.2.gem New: ---- delayed_job-4.1.3.gem ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ rubygem-delayed_job.spec ++++++ --- /var/tmp/diff_new_pack.3O1v03/_old 2017-06-02 10:34:03.709720571 +0200 +++ /var/tmp/diff_new_pack.3O1v03/_new 2017-06-02 10:34:03.713720006 +0200 @@ -1,7 +1,7 @@ # # spec file for package rubygem-delayed_job # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -24,7 +24,7 @@ # Name: rubygem-delayed_job -Version: 4.1.2 +Version: 4.1.3 Release: 0 %define mod_name delayed_job %define mod_full_name %{mod_name}-%{version} ++++++ delayed_job-4.1.2.gem -> delayed_job-4.1.3.gem ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/CHANGELOG.md new/CHANGELOG.md --- old/CHANGELOG.md 2016-05-16 18:29:42.000000000 +0200 +++ new/CHANGELOG.md 2017-05-26 20:11:43.000000000 +0200 @@ -1,4 +1,14 @@ +4.1.3 - 2017-05-26 +================= +* Don't mutate the options hash (#877) +* Log an error message when a deserialization error occurs (#894) +* Adding the queue name to the log output (#917) +* Don't include ClassMethods with MessageSending (#924) +* Fix YAML deserialization error if original object is soft-deleted (#947) +* Add support for Rails 5.1 (#982) + 4.1.2 - 2016-05-16 +================== * Added Delayed::Worker.queue_attributes * Limit what we require in ActiveSupport * Fix pid file creation when there is no tmp directory diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/README.md new/README.md --- old/README.md 2016-05-16 18:29:42.000000000 +0200 +++ new/README.md 2017-05-26 20:11:43.000000000 +0200 @@ -1,7 +1,7 @@ **If you're viewing this at https://github.com/collectiveidea/delayed_job, you're reading the documentation for the master branch. [View documentation for the latest release -(4.1.2).](https://github.com/collectiveidea/delayed_job/tree/v4.1.2)** +(4.1.3).](https://github.com/collectiveidea/delayed_job/tree/v4.1.3)** Delayed::Job ============ @@ -37,8 +37,7 @@ Installation ============ -delayed_job 3.0.0 only supports Rails 3.0+. See the [2.0 -branch](https://github.com/collectiveidea/delayed_job/tree/v2.0) for Rails 2. +delayed_job 3.0.0 only supports Rails 3.0+. delayed_job supports multiple backends for storing the job queue. [See the wiki for other backends](https://github.com/collectiveidea/delayed_job/wiki/Backends). @@ -220,6 +219,12 @@ object.delay(:queue => 'high_priority', priority: 0).method ``` +You can start processes to only work certain queues with the `queue` and `queues` +options defined below. Processes started without specifying a queue will run jobs +from **any** queue. To effectively have a process that runs jobs where a queue is not +specified, set a default queue name with `Delayed::Worker.default_queue_name` and +have the processes run that queue. + Running Jobs ============ `script/delayed_job` can be used to manage a background process which will Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/delayed_job.gemspec new/delayed_job.gemspec --- old/delayed_job.gemspec 2016-05-16 18:29:42.000000000 +0200 +++ new/delayed_job.gemspec 2017-05-26 20:11:43.000000000 +0200 @@ -1,7 +1,7 @@ # -*- encoding: utf-8 -*- Gem::Specification.new do |spec| - spec.add_dependency 'activesupport', ['>= 3.0', '< 5.1'] + spec.add_dependency 'activesupport', ['>= 3.0', '< 5.2'] spec.authors = ['Brandon Keepers', 'Brian Ryckbost', 'Chris Gaffney', 'David Genord II', 'Erik Michaels-Ober', 'Matt Griffin', 'Steve Richert', 'Tobias Lütke'] spec.description = 'Delayed_job (or DJ) encapsulates the common pattern of asynchronously executing longer tasks in the background. It is a direct extraction from Shopify where the job table is responsible for a multitude of core tasks.' spec.email = ['br...@collectiveidea.com'] @@ -13,5 +13,5 @@ spec.require_paths = ['lib'] spec.summary = 'Database-backed asynchronous priority queue system -- Extracted from Shopify' spec.test_files = Dir.glob('spec/**/*') - spec.version = '4.1.2' + spec.version = '4.1.3' end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/delayed/backend/base.rb new/lib/delayed/backend/base.rb --- old/lib/delayed/backend/base.rb 2016-05-16 18:29:42.000000000 +0200 +++ new/lib/delayed/backend/base.rb 2017-05-26 20:11:43.000000000 +0200 @@ -30,16 +30,13 @@ end # Allow the backend to attempt recovery from reserve errors - def recover_from(_error) - end + def recover_from(_error); end # Hook method that is called before a new worker is forked - def before_fork - end + def before_fork; end # Hook method that is called after a new worker is forked - def after_fork - end + def after_fork; end def work_off(num = 100) warn '[DEPRECATION] `Delayed::Job.work_off` is deprecated. Use `Delayed::Worker.new.work_off instead.' @@ -101,7 +98,7 @@ def hook(name, *args) if payload_object.respond_to?(name) method = payload_object.method(name) - method.arity == 0 ? method.call : method.call(self, *args) + method.arity.zero? ? method.call : method.call(self, *args) end rescue DeserializationError # rubocop:disable HandleExceptions end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/delayed/backend/job_preparer.rb new/lib/delayed/backend/job_preparer.rb --- old/lib/delayed/backend/job_preparer.rb 2016-05-16 18:29:42.000000000 +0200 +++ new/lib/delayed/backend/job_preparer.rb 2017-05-26 20:11:43.000000000 +0200 @@ -4,7 +4,7 @@ attr_reader :options, :args def initialize(*args) - @options = args.extract_options! + @options = args.extract_options!.dup @args = args end @@ -42,9 +42,11 @@ options[:run_at] = args[1] end + # rubocop:disable GuardClause unless options[:payload_object].respond_to?(:perform) raise ArgumentError, 'Cannot enqueue items which do not respond to perform' end + # rubocop:enabled GuardClause end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/delayed/backend/shared_spec.rb new/lib/delayed/backend/shared_spec.rb --- old/lib/delayed/backend/shared_spec.rb 2016-05-16 18:29:42.000000000 +0200 +++ new/lib/delayed/backend/shared_spec.rb 2017-05-26 20:11:43.000000000 +0200 @@ -113,6 +113,12 @@ job = described_class.enqueue M::ModuleJob.new expect { job.invoke_job }.to change { M::ModuleJob.runs }.from(0).to(1) end + + it 'does not mutate the options hash' do + options = {:priority => 1} + described_class.enqueue SimpleJob.new, options + expect(options).to eq(:priority => 1) + end end context 'with delay_jobs = false' do diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/delayed/command.rb new/lib/delayed/command.rb --- old/lib/delayed/command.rb 2016-05-16 18:29:42.000000000 +0200 +++ new/lib/delayed/command.rb 2017-05-26 20:11:43.000000000 +0200 @@ -77,8 +77,11 @@ opt.on('--exit-on-complete', 'Exit when no more jobs are available to run. This will exit if all jobs are scheduled to run in the future.') do @options[:exit_on_complete] = true end + opt.on('--daemon-options a, b, c', Array, 'options to be passed through to daemons gem') do |daemon_options| + @daemon_options = daemon_options + end end - @args = opts.parse!(args) + @args = opts.parse!(args) + (@daemon_options || []) end def daemonize # rubocop:disable PerceivedComplexity @@ -88,11 +91,13 @@ if worker_pools setup_pools elsif @options[:identifier] + # rubocop:disable GuardClause if worker_count > 1 raise ArgumentError, 'Cannot specify both --number-of-workers and --identifier' else run_process("delayed_job.#{@options[:identifier]}", @options) end + # rubocop:enable GuardClause else worker_count.times do |worker_index| process_name = worker_count == 1 ? 'delayed_job' : "delayed_job.#{worker_index}" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/delayed/exceptions.rb new/lib/delayed/exceptions.rb --- old/lib/delayed/exceptions.rb 2016-05-16 18:29:42.000000000 +0200 +++ new/lib/delayed/exceptions.rb 2017-05-26 20:11:43.000000000 +0200 @@ -8,5 +8,5 @@ end end - class FatalBackendError < Exception; end + class FatalBackendError < RuntimeError; end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/delayed/lifecycle.rb new/lib/delayed/lifecycle.rb --- old/lib/delayed/lifecycle.rb 2016-05-16 18:29:42.000000000 +0200 +++ new/lib/delayed/lifecycle.rb 2017-05-26 20:11:43.000000000 +0200 @@ -1,5 +1,5 @@ module Delayed - class InvalidCallback < Exception; end + class InvalidCallback < RuntimeError; end class Lifecycle EVENTS = { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/delayed/message_sending.rb new/lib/delayed/message_sending.rb --- old/lib/delayed/message_sending.rb 2016-05-16 18:29:42.000000000 +0200 +++ new/lib/delayed/message_sending.rb 2017-05-26 20:11:43.000000000 +0200 @@ -6,9 +6,11 @@ @options = options end + # rubocop:disable MethodMissing def method_missing(method, *args) Job.enqueue({:payload_object => @payload_class.new(@target, method.to_sym, args)}.merge(@options)) end + # rubocop:enable MethodMissing end module MessageSending @@ -26,36 +28,36 @@ warn '[DEPRECATION] `object.send_at(time, :method)` is deprecated. Use `object.delay(:run_at => time).method' __delay__(:run_at => time).__send__(method, *args) end + end - module ClassMethods - def handle_asynchronously(method, opts = {}) # rubocop:disable PerceivedComplexity - aliased_method = method.to_s.sub(/([?!=])$/, '') - punctuation = $1 # rubocop:disable PerlBackrefs - with_method = "#{aliased_method}_with_delay#{punctuation}" - without_method = "#{aliased_method}_without_delay#{punctuation}" - define_method(with_method) do |*args| - curr_opts = opts.clone - curr_opts.each_key do |key| - next unless (val = curr_opts[key]).is_a?(Proc) - curr_opts[key] = if val.arity == 1 - val.call(self) - else - val.call - end + module MessageSendingClassMethods + def handle_asynchronously(method, opts = {}) # rubocop:disable PerceivedComplexity + aliased_method = method.to_s.sub(/([?!=])$/, '') + punctuation = $1 # rubocop:disable PerlBackrefs + with_method = "#{aliased_method}_with_delay#{punctuation}" + without_method = "#{aliased_method}_without_delay#{punctuation}" + define_method(with_method) do |*args| + curr_opts = opts.clone + curr_opts.each_key do |key| + next unless (val = curr_opts[key]).is_a?(Proc) + curr_opts[key] = if val.arity == 1 + val.call(self) + else + val.call end - delay(curr_opts).__send__(without_method, *args) end + delay(curr_opts).__send__(without_method, *args) + end - alias_method without_method, method - alias_method method, with_method + alias_method without_method, method + alias_method method, with_method - if public_method_defined?(without_method) - public method - elsif protected_method_defined?(without_method) - protected method - elsif private_method_defined?(without_method) - private method - end + if public_method_defined?(without_method) + public method + elsif protected_method_defined?(without_method) + protected method + elsif private_method_defined?(without_method) + private method end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/delayed/performable_method.rb new/lib/delayed/performable_method.rb --- old/lib/delayed/performable_method.rb 2016-05-16 18:29:42.000000000 +0200 +++ new/lib/delayed/performable_method.rb 2017-05-26 20:11:43.000000000 +0200 @@ -30,9 +30,11 @@ object.method(sym) end + # rubocop:disable MethodMissing def method_missing(symbol, *args) object.send(symbol, *args) end + # rubocop:enable MethodMissing def respond_to?(symbol, include_private = false) super || object.respond_to?(symbol, include_private) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/delayed/psych_ext.rb new/lib/delayed/psych_ext.rb --- old/lib/delayed/psych_ext.rb 2016-05-16 18:29:42.000000000 +0200 +++ new/lib/delayed/psych_ext.rb 2017-05-26 20:11:43.000000000 +0200 @@ -37,7 +37,7 @@ klass = result.class id = result[klass.primary_key] begin - klass.find(id) + klass.unscoped.find(id) rescue ActiveRecord::RecordNotFound => error # rubocop:disable BlockNesting raise Delayed::DeserializationError, "ActiveRecord::RecordNotFound, class: #{klass}, primary key: #{id} (#{error.message})" end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/delayed/worker.rb new/lib/delayed/worker.rb --- old/lib/delayed/worker.rb 2016-05-16 18:29:42.000000000 +0200 +++ new/lib/delayed/worker.rb 2017-05-26 20:11:44.000000000 +0200 @@ -233,6 +233,8 @@ job_say job, format('COMPLETED after %.4f', runtime) return true # did work rescue DeserializationError => error + job_say job, "FAILED permanently with #{error.class.name}: #{error.message}", 'error' + job.error = error failed(job) rescue Exception => error # rubocop:disable RescueException @@ -268,7 +270,7 @@ end def job_say(job, text, level = default_log_level) - text = "Job #{job.name} (id=#{job.id}) #{text}" + text = "Job #{job.name} (id=#{job.id})#{say_queue(job.queue)} #{text}" say text, level end @@ -293,6 +295,10 @@ protected + def say_queue(queue) + " (queue=#{queue})" if queue + end + def handle_failed_job(job, error) job.error = error job_say job, "FAILED (#{job.attempts} prior attempts) with #{error.class.name}: #{error.message}", 'error' @@ -320,8 +326,12 @@ def reload! return unless self.class.reload_app? - ActionDispatch::Reloader.cleanup! - ActionDispatch::Reloader.prepare! + if defined?(ActiveSupport::Reloader) + Rails.application.reloader.reload! + else + ActionDispatch::Reloader.cleanup! + ActionDispatch::Reloader.prepare! + end end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/delayed_job.rb new/lib/delayed_job.rb --- old/lib/delayed_job.rb 2016-05-16 18:29:42.000000000 +0200 +++ new/lib/delayed_job.rb 2017-05-26 20:11:44.000000000 +0200 @@ -1,3 +1,4 @@ +require 'active_support' require 'delayed/compatibility' require 'delayed/exceptions' require 'delayed/message_sending' @@ -19,4 +20,4 @@ require 'delayed/railtie' if defined?(Rails::Railtie) Object.send(:include, Delayed::MessageSending) -Module.send(:include, Delayed::MessageSending::ClassMethods) +Module.send(:include, Delayed::MessageSendingClassMethods) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/lib/generators/delayed_job/delayed_job_generator.rb new/lib/generators/delayed_job/delayed_job_generator.rb --- old/lib/generators/delayed_job/delayed_job_generator.rb 2016-05-16 18:29:42.000000000 +0200 +++ new/lib/generators/delayed_job/delayed_job_generator.rb 2017-05-26 20:11:44.000000000 +0200 @@ -6,6 +6,6 @@ def create_executable_file template 'script', "#{Delayed::Compatibility.executable_prefix}/delayed_job" - chmod "#{Delayed::Compatibility.executable_prefix}/delayed_job", 0755 + chmod "#{Delayed::Compatibility.executable_prefix}/delayed_job", 0o755 end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/metadata new/metadata --- old/metadata 2016-05-16 18:29:42.000000000 +0200 +++ new/metadata 2017-05-26 20:11:43.000000000 +0200 @@ -1,7 +1,7 @@ --- !ruby/object:Gem::Specification name: delayed_job version: !ruby/object:Gem::Version - version: 4.1.2 + version: 4.1.3 platform: ruby authors: - Brandon Keepers @@ -15,7 +15,7 @@ autorequire: bindir: bin cert_chain: [] -date: 2016-05-16 00:00:00.000000000 Z +date: 2017-05-26 00:00:00.000000000 Z dependencies: - !ruby/object:Gem::Dependency name: activesupport @@ -26,7 +26,7 @@ version: '3.0' - - "<" - !ruby/object:Gem::Version - version: '5.1' + version: '5.2' type: :runtime prerelease: false version_requirements: !ruby/object:Gem::Requirement @@ -36,7 +36,7 @@ version: '3.0' - - "<" - !ruby/object:Gem::Version - version: '5.1' + version: '5.2' description: Delayed_job (or DJ) encapsulates the common pattern of asynchronously executing longer tasks in the background. It is a direct extraction from Shopify where the job table is responsible for a multitude of core tasks. @@ -119,7 +119,7 @@ version: '0' requirements: [] rubyforge_project: -rubygems_version: 2.5.1 +rubygems_version: 2.6.11 signing_key: specification_version: 4 summary: Database-backed asynchronous priority queue system -- Extracted from Shopify diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/autoloaded/clazz.rb new/spec/autoloaded/clazz.rb --- old/spec/autoloaded/clazz.rb 2016-05-16 18:29:42.000000000 +0200 +++ new/spec/autoloaded/clazz.rb 2017-05-26 20:11:44.000000000 +0200 @@ -1,7 +1,6 @@ # Make sure this file does not get required manually module Autoloaded class Clazz - def perform - end + def perform; end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/autoloaded/instance_clazz.rb new/spec/autoloaded/instance_clazz.rb --- old/spec/autoloaded/instance_clazz.rb 2016-05-16 18:29:42.000000000 +0200 +++ new/spec/autoloaded/instance_clazz.rb 2017-05-26 20:11:44.000000000 +0200 @@ -1,6 +1,5 @@ module Autoloaded class InstanceClazz - def perform - end + def perform; end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/autoloaded/instance_struct.rb new/spec/autoloaded/instance_struct.rb --- old/spec/autoloaded/instance_struct.rb 2016-05-16 18:29:42.000000000 +0200 +++ new/spec/autoloaded/instance_struct.rb 2017-05-26 20:11:44.000000000 +0200 @@ -1,7 +1,6 @@ module Autoloaded InstanceStruct = ::Struct.new(nil) class InstanceStruct - def perform - end + def perform; end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/autoloaded/struct.rb new/spec/autoloaded/struct.rb --- old/spec/autoloaded/struct.rb 2016-05-16 18:29:42.000000000 +0200 +++ new/spec/autoloaded/struct.rb 2017-05-26 20:11:44.000000000 +0200 @@ -2,7 +2,6 @@ module Autoloaded Struct = ::Struct.new(nil) class Struct - def perform - end + def perform; end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/message_sending_spec.rb new/spec/message_sending_spec.rb --- old/spec/message_sending_spec.rb 2016-05-16 18:29:42.000000000 +0200 +++ new/spec/message_sending_spec.rb 2017-05-26 20:11:44.000000000 +0200 @@ -1,6 +1,11 @@ require 'helper' describe Delayed::MessageSending do + it 'does not include ClassMethods along with MessageSending' do + expect { ClassMethods }.to raise_error(NameError) + expect(defined?(String::ClassMethods)).to eq(nil) + end + describe 'handle_asynchronously' do class Story def tell!(_arg); end @@ -19,7 +24,7 @@ expect(job.payload_object.class).to eq(Delayed::PerformableMethod) expect(job.payload_object.method_name).to eq(:tell_without_delay!) expect(job.payload_object.args).to eq([1]) - end.to change { Delayed::Job.count } + end.to(change { Delayed::Job.count }) end describe 'with options' do @@ -42,8 +47,7 @@ describe 'using a proc with parameters' do class Yarn attr_accessor :importance - def spin - end + def spin; end handle_asynchronously :spin, :priority => proc { |y| y.importance } end @@ -107,7 +111,7 @@ expect do fairy_tail.delay.tell end.to change(fairy_tail, :happy_ending).from(nil).to(true) - end.not_to change { Delayed::Job.count } + end.not_to(change { Delayed::Job.count }) end it 'does delay the job when delay_jobs is true' do @@ -137,7 +141,7 @@ expect do fairy_tail.delay.tell end.to change(fairy_tail, :happy_ending).from(nil).to(true) - end.not_to change { Delayed::Job.count } + end.not_to(change { Delayed::Job.count }) end end end diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/performable_method_spec.rb new/spec/performable_method_spec.rb --- old/spec/performable_method_spec.rb 2016-05-16 18:29:42.000000000 +0200 +++ new/spec/performable_method_spec.rb 2017-05-26 20:11:44.000000000 +0200 @@ -30,8 +30,7 @@ it 'does not raise NoMethodError if target method is private' do clazz = Class.new do - def private_method - end + def private_method; end private :private_method end expect { Delayed::PerformableMethod.new(clazz.new, :private_method, []) }.not_to raise_error diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/spec/worker_spec.rb new/spec/worker_spec.rb --- old/spec/worker_spec.rb 2016-05-16 18:29:42.000000000 +0200 +++ new/spec/worker_spec.rb 2017-05-26 20:11:44.000000000 +0200 @@ -24,15 +24,23 @@ describe 'job_say' do before do @worker = Delayed::Worker.new - @job = double('job', :id => 123, :name => 'ExampleJob') + @job = double('job', :id => 123, :name => 'ExampleJob', :queue => nil) end it 'logs with job name and id' do + expect(@job).to receive(:queue) expect(@worker).to receive(:say). with('Job ExampleJob (id=123) message', Delayed::Worker.default_log_level) @worker.job_say(@job, 'message') end + it 'logs with job name, queue and id' do + expect(@job).to receive(:queue).and_return('test') + expect(@worker).to receive(:say). + with('Job ExampleJob (id=123) (queue=test) message', Delayed::Worker.default_log_level) + @worker.job_say(@job, 'message') + end + it 'has a configurable default log level' do Delayed::Worker.default_log_level = 'error'