Skip to content

Commit

Permalink
use ApplicationJob with Delayed Job backend (#916)
Browse files Browse the repository at this point in the history
  • Loading branch information
eitoball authored Oct 8, 2022
1 parent f2e331a commit f173688
Show file tree
Hide file tree
Showing 8 changed files with 22 additions and 18 deletions.
6 changes: 2 additions & 4 deletions app/controllers/bgeigie_imports_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,7 @@ def submit
if @bgeigie_import.would_auto_approve
@bgeigie_import.approve!('ZBot Auto Approving System')
else
@bgeigie_import.update_column(:status, 'submitted')
@bgeigie_import.update_column(:rejected, 'false')
@bgeigie_import.update_column(:rejected_by, nil)
@bgeigie_import.update_columns(status: 'submitted', rejected: false, rejected_by: nil)
Notifications.import_awaiting_approval(@bgeigie_import).deliver_later
end
redirect_to @bgeigie_import
Expand Down Expand Up @@ -114,7 +112,7 @@ def show

def create
@bgeigie_import = current_user.bgeigie_imports.build(bgeigie_import_params)
@bgeigie_import.process_in_background if @bgeigie_import.save
ProcessBgeigieImportJob.perform_later(@bgeigie_import.id) if @bgeigie_import.save
respond_with @bgeigie_import
end

Expand Down
4 changes: 4 additions & 0 deletions app/jobs/application_job.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# frozen_string_literal: true

class ApplicationJob < ActiveJob::Base
end
4 changes: 2 additions & 2 deletions app/jobs/finalize_bgeigie_import_job.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# frozen_string_literal: true

FinalizeBgeigieImportJob = Struct.new(:bgeigie_import_id) do
def perform
class FinalizeBgeigieImportJob < ApplicationJob
def perform(bgeigie_import_id)
BgeigieImport.find(bgeigie_import_id).finalize!
end
end
4 changes: 2 additions & 2 deletions app/jobs/process_bgeigie_import_job.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# frozen_string_literal: true

ProcessBgeigieImportJob = Struct.new(:bgeigie_import_id) do
def perform
class ProcessBgeigieImportJob < ApplicationJob
def perform(bgeigie_import_id)
BgeigieImport.find(bgeigie_import_id).process
end
end
9 changes: 2 additions & 7 deletions app/models/bgeigie_import.rb
Original file line number Diff line number Diff line change
Expand Up @@ -101,14 +101,9 @@ def process
check_auto_approve # check if this drive can be auto approved
end

def process_in_background
Delayed::Job.enqueue ProcessBgeigieImportJob.new(id)
end

def approve!(userinfo)
update_column(:approved, true)
update_column(:approved_by, userinfo)
Delayed::Job.enqueue FinalizeBgeigieImportJob.new(id)
update_columns(approved: true, approved_by: userinfo)
FinalizeBgeigieImportJob.perform_later(id)
Notifications.import_approved(self).deliver_later
end

Expand Down
2 changes: 2 additions & 0 deletions config/application.rb
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,8 @@ class Application < Rails::Application
# Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0'

config.active_job.queue_adapter = :delayed_job

config.active_record.schema_format = :sql
config.active_record.yaml_column_permitted_classes = [
ActiveSupport::HashWithIndifferentAccess,
Expand Down
7 changes: 5 additions & 2 deletions spec/acceptance/user_uploads_bgeigie_log_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
require 'spec_helper'

feature 'User uploads bgeigie log', type: :feature do
include ActiveJob::TestHelper

let!(:user) { Fabricate(:user) }
let!(:moderator) { Fabricate(:user, moderator: true) }

Expand All @@ -17,11 +19,12 @@
expect(page).to have_content('Unprocessed')
fill_in 'Credits', with: 'Bill'
fill_in 'Cities', with: 'Dublin'
Delayed::Worker.new.work_off
perform_enqueued_jobs
click_button 'Save'
expect(page).to have_content('Processed')
click_button 'Submit for Approval'
expect(page).to have_content('Submitted')
perform_enqueued_jobs
expect(find_email(Notifications::APPROVERS_LIST,
with_subject: 'A Safecast import is awaiting approval')).to be_present
end
Expand All @@ -42,7 +45,7 @@
click_link 'Submitted'
click_link File.basename(bgeigie_import.source.filename)
click_button 'Approve'
Delayed::Worker.new.work_off
perform_enqueued_jobs
visit(current_path)
expect(page).to have_content('Processed')
expect(find_email(user.email,
Expand Down
4 changes: 3 additions & 1 deletion spec/integration/api/bgeigie_imports_spec.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# frozen_string_literal: true

feature '/bgeigie_imports API endpoint', type: :request do
include ActiveJob::TestHelper

before(:each) do
User.destroy_all
@user ||= Fabricate(:user,
Expand All @@ -27,7 +29,7 @@

context 'after processing' do
before(:each) do
Delayed::Worker.new.work_off
perform_enqueued_jobs
BgeigieImport.find_each(&:finalize!)
end
let!(:updated_result) do
Expand Down

0 comments on commit f173688

Please sign in to comment.