Fix delayed_job_active_record overriding defaults

Because `delayed_job_active_record` was loading active_record to early it used to override defaults set in our
initializers.

Dominik Sander 7 years ago
parent
commit
bf35a49f6c
6 changed files with 22 additions and 20 deletions
  1. 1 1
      Gemfile
  2. 3 3
      Gemfile.lock
  3. 1 1
      app/models/agent.rb
  4. 3 3
      app/models/agent_log.rb
  5. 1 1
      app/models/event.rb
  6. 13 11
      config/initializers/delayed_job.rb

+ 1 - 1
Gemfile

@@ -87,7 +87,7 @@ gem 'bundler', '>= 1.5.0'
87 87
 gem 'coffee-rails', '~> 4.2'
88 88
 gem 'daemons', '~> 1.1.9'
89 89
 gem 'delayed_job', '~> 4.1.0'
90
-gem 'delayed_job_active_record', github: 'collectiveidea/delayed_job_active_record', branch: 'master'
90
+gem 'delayed_job_active_record', github: 'dsander/delayed_job_active_record', branch: 'rails5'
91 91
 gem 'devise','~> 4.2.0'
92 92
 gem 'em-http-request', '~> 1.1.2'
93 93
 gem 'faraday', '~> 0.9.0'

+ 3 - 3
Gemfile.lock

@@ -18,9 +18,9 @@ GIT
18 18
       simple_oauth (~> 0.3.0)
19 19
 
20 20
 GIT
21
-  remote: git://github.com/collectiveidea/delayed_job_active_record.git
22
-  revision: 36f434c4fd660e8f11ce932be117e9c71dde7212
23
-  branch: master
21
+  remote: git://github.com/dsander/delayed_job_active_record.git
22
+  revision: b314972ccc92e0e8b03b1589174d8fb9a82b3cd0
23
+  branch: rails5
24 24
   specs:
25 25
     delayed_job_active_record (4.1.1)
26 26
       activerecord (>= 3.0, < 5.1)

+ 1 - 1
app/models/agent.rb

@@ -44,7 +44,7 @@ class Agent < ActiveRecord::Base
44 44
   after_save :possibly_update_event_expirations
45 45
 
46 46
   belongs_to :user, :inverse_of => :agents
47
-  belongs_to :service, :inverse_of => :agents
47
+  belongs_to :service, :inverse_of => :agents, optional: true
48 48
   has_many :events, -> { order("events.id desc") }, :dependent => :delete_all, :inverse_of => :agent
49 49
   has_one  :most_recent_event, -> { order("events.id desc") }, :inverse_of => :agent, :class_name => "Event"
50 50
   has_many :logs,  -> { order("agent_logs.id desc") }, :dependent => :delete_all, :inverse_of => :agent, :class_name => "AgentLog"

+ 3 - 3
app/models/agent_log.rb

@@ -3,10 +3,10 @@
3 3
 # Agents' `last_error_log_at` column.  These are often used to determine if an Agent is `working?`.
4 4
 class AgentLog < ActiveRecord::Base
5 5
   belongs_to :agent
6
-  belongs_to :inbound_event, :class_name => "Event"
7
-  belongs_to :outbound_event, :class_name => "Event"
6
+  belongs_to :inbound_event, :class_name => "Event", optional: true
7
+  belongs_to :outbound_event, :class_name => "Event", optional: true
8 8
 
9
-  validates_presence_of :agent, :message
9
+  validates_presence_of :message
10 10
   validates_numericality_of :level, :only_integer => true, :greater_than_or_equal_to => 0, :less_than => 5
11 11
 
12 12
   before_validation :scrub_message

+ 1 - 1
app/models/event.rb

@@ -11,7 +11,7 @@ class Event < ActiveRecord::Base
11 11
 
12 12
   json_serialize :payload
13 13
 
14
-  belongs_to :user
14
+  belongs_to :user, optional: true
15 15
   belongs_to :agent, :counter_cache => true
16 16
 
17 17
   has_many :agent_logs_as_inbound_event, :class_name => "AgentLog", :foreign_key => :inbound_event_id, :dependent => :nullify

+ 13 - 11
config/initializers/delayed_job.rb

@@ -10,16 +10,18 @@ Delayed::Worker.logger = Rails.logger
10 10
 # Delayed::Worker.logger = Logger.new(Rails.root.join('log', 'delayed_job.log'))
11 11
 # Delayed::Worker.logger.level = Logger::DEBUG
12 12
 
13
-class Delayed::Job
14
-  scope :pending, -> { where("locked_at IS NULL AND attempts = 0") }
15
-  scope :awaiting_retry, -> { where("failed_at IS NULL AND attempts > 0 AND locked_at IS NULL") }
16
-  scope :failed, -> { where("failed_at IS NOT NULL") }
17
-end
13
+ActiveSupport.on_load(:delayed_job_active_record) do
14
+  class Delayed::Job
15
+    scope :pending, -> { where("locked_at IS NULL AND attempts = 0") }
16
+    scope :awaiting_retry, -> { where("failed_at IS NULL AND attempts > 0 AND locked_at IS NULL") }
17
+    scope :failed, -> { where("failed_at IS NOT NULL") }
18
+  end
18 19
 
19
-database_deadlocks_when_using_optimized_strategy = lambda do
20
-  ENV["DATABASE_ADAPTER"] == "mysql2"
21
-end
20
+  database_deadlocks_when_using_optimized_strategy = lambda do
21
+    ENV["DATABASE_ADAPTER"] == "mysql2"
22
+  end
22 23
 
23
-Delayed::Backend::ActiveRecord.configure do |config|
24
-  config.reserve_sql_strategy = :default_sql
25
-end if database_deadlocks_when_using_optimized_strategy.call
24
+  Delayed::Backend::ActiveRecord.configure do |config|
25
+    config.reserve_sql_strategy = :default_sql
26
+  end if database_deadlocks_when_using_optimized_strategy.call
27
+end