diff --git a/Gemfile.lock b/Gemfile.lock index b1a083b..1477f5c 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - outboxable (1.0.3) + outboxable (1.0.5) bunny (>= 2.19.0) connection_pool (~> 2.3.0) diff --git a/lib/generators/outboxable/install_generator.rb b/lib/generators/outboxable/install_generator.rb index 7975f8d..d40fa8c 100644 --- a/lib/generators/outboxable/install_generator.rb +++ b/lib/generators/outboxable/install_generator.rb @@ -14,7 +14,7 @@ module Outboxable # Copy initializer into user app def copy_initializer - copy_file('activerecod_initializer.rb', 'config/initializers/z_outboxable.rb') if @orm == 'activerecord' + copy_file('activerecord_initializer.rb', 'config/initializers/z_outboxable.rb') if @orm == 'activerecord' copy_file('mongoid_initializer.rb', 'config/initializers/z_outboxable.rb') if @orm == 'mongoid' end diff --git a/lib/outboxable/version.rb b/lib/outboxable/version.rb index a1d51b7..718b1c4 100644 --- a/lib/outboxable/version.rb +++ b/lib/outboxable/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module Outboxable - VERSION = '1.0.3' + VERSION = '1.0.5' end diff --git a/lib/templates/activerecrod_outbox.rb b/lib/templates/activerecrod_outbox.rb index 6f3d0d4..2d054eb 100644 --- a/lib/templates/activerecrod_outbox.rb +++ b/lib/templates/activerecrod_outbox.rb @@ -4,7 +4,7 @@ class Outbox < ApplicationRecord before_save :check_publishing # Callbacks before_create :set_last_attempted_at - after_save :publish, if: :allow_publish + after_commit :publish, if: :allow_publish? # Enums enum status: { pending: 0, processing: 1, published: 2, failed: 3 } enum size: { single: 0, batch: 1 } @@ -20,8 +20,12 @@ class Outbox < ApplicationRecord end def publish - Outboxable::Worker.perform_async(id) - update(status: :processing, last_attempted_at: 1.minute.from_now, allow_publish: false) + # Run this in own thread + threaded = Thread.new do + Outboxable::Worker.perform_inline(id) + update(status: :processing, last_attempted_at: 1.minute.from_now, allow_publish: false) + end + threaded.join end def check_publishing