diff --git a/app/jobs/application_job.rb b/app/jobs/application_job.rb new file mode 100644 index 000000000..0e0db02ba --- /dev/null +++ b/app/jobs/application_job.rb @@ -0,0 +1,8 @@ +class ApplicationJob < ActiveJob::Base + queue_as :default + queue_with_priority 0 + + discard_on ActiveJob::DeserializationError do |job, error| + DanbooruLogger.log(error) + end +end diff --git a/config/environments/production.rb b/config/environments/production.rb index d35ae37d2..950a79207 100644 --- a/config/environments/production.rb +++ b/config/environments/production.rb @@ -62,7 +62,7 @@ Rails.application.configure do # config.cache_store = :mem_cache_store # Use a real queuing backend for Active Job (and separate queues per environment) - # config.active_job.queue_adapter = :resque + config.active_job.queue_adapter = :delayed_job # config.active_job.queue_name_prefix = "danbooru_#{Rails.env}" config.action_mailer.perform_caching = false diff --git a/test/jobs/application_job_test.rb b/test/jobs/application_job_test.rb new file mode 100644 index 000000000..a40a77324 --- /dev/null +++ b/test/jobs/application_job_test.rb @@ -0,0 +1,22 @@ +require 'test_helper' + +class TestJob < ApplicationJob + def perform(record); end +end + +class ApplicationJobTest < ActiveJob::TestCase + context "An active job" do + should "discard and log jobs with deserialization errors" do + DanbooruLogger.expects(:log) + + assert_nothing_raised do + perform_enqueued_jobs do + tag = create(:tag, name: "tagme") + tag.delete + + TestJob.perform_later(tag) + end + end + end + end +end