outboxer 0.1.3 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3b7fa112786d6fc9a6352d8dec8d8a88ddaa3e352e42bd9bc49c20639a7f173b
4
- data.tar.gz: 3edfd6a9e839c3ba75731abc42aa6c3c5d73faa84b39f9c556f39af46ab61ee7
3
+ metadata.gz: 5e60726e7509002cf28692fa1a42b33a749d70db4160fe83694c72de1a728efe
4
+ data.tar.gz: '095c7b5333a586c5956ce916ba79e03719292ee809c4c9b33ee40d5480750c88'
5
5
  SHA512:
6
- metadata.gz: 6117656da5d2fee53f531986690d311ac68f7a1c70d48f8870de6c3ee36f1aad6767a3b2c0f39c07b40a85b599a88df643d7275d37ca982295f678a6ea84ae52
7
- data.tar.gz: 4397e26b12d9c854ed80ae051701be3860dd410270a127899beeb6181b7e95e1634bc890b727c9c256cc74d292e5cab8aa9fdef514792881ba6136d2db946f23
6
+ metadata.gz: 44b2ef0569493bacec41a07adffe2fe0e07b1c7fc35ae867f3c417ad5b68c1de6ff6090228e29c1f50423f931bb76598348a51aff6250de7efd0eb05df718736
7
+ data.tar.gz: 914eae8fa91d7c9633f4e55fef3dc5ed26add2bbf25653b579c4f659afb62cbab18e4f2244d0ee84b8a74c72d675ea8ad40a5b2a975b3b0d0b9d92b645095e20
data/README.md CHANGED
@@ -51,11 +51,12 @@ end
51
51
 
52
52
  ```ruby
53
53
  Outboxer::Publisher.publish do |args|
54
- args.logger.info("[#{message.id}] publishing")
54
+ logger = args.logger
55
+ message = args.message
55
56
 
56
- Worker.perform_async({ message_id: args.message.id })
57
-
58
- args.logger.info("[#{message.id}] published")
57
+ logger.info("[#{message.id}] publishing")
58
+ HardJob.perform_async({ "message_id" => message.id })
59
+ logger.info("[#{message.id}] published")
59
60
  end
60
61
  ```
61
62
 
data/Rakefile CHANGED
@@ -1,10 +1,14 @@
1
- require "bundler/gem_tasks"
1
+ # require "bundler/gem_tasks"
2
+ # require "bundler/setup"
2
3
  require "rspec/core/rake_task"
3
4
 
4
5
  RSpec::Core::RakeTask.new(:spec)
5
6
 
7
+ require 'pry'
6
8
  require "rubocop/rake_task"
7
9
 
8
10
  RuboCop::RakeTask.new
9
11
 
10
12
  task default: %i[spec rubocop]
13
+
14
+ load 'lib/tasks/gem.rake'
@@ -7,8 +7,6 @@ Outboxer::Publisher.publish do |args|
7
7
  message = args.message
8
8
 
9
9
  logger.info("[#{message.id}] publishing")
10
-
11
10
  HardJob.perform_async({ "message_id" => message.id })
12
-
13
11
  logger.info("[#{message.id}] published")
14
12
  end
@@ -0,0 +1,9 @@
1
+ require "active_record"
2
+
3
+ module Outboxer
4
+ class Exception < ::ActiveRecord::Base
5
+ self.table_name = :outboxer_exceptions
6
+
7
+ belongs_to :message, class_name: "::Outboxer::Message"
8
+ end
9
+ end
@@ -0,0 +1,19 @@
1
+ require "active_record"
2
+
3
+ module Outboxer
4
+ class Message < ::ActiveRecord::Base
5
+ self.table_name = :outboxer_messages
6
+
7
+ STATUS = {
8
+ unpublished: "unpublished",
9
+ publishing: "publishing",
10
+ failed: "failed"
11
+ }.freeze
12
+
13
+ belongs_to :message, polymorphic: true
14
+
15
+ has_many :exceptions, -> { order(created_at: :asc) },
16
+ class_name: "::Outboxer::Exception",
17
+ dependent: :destroy
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ module Outboxer
2
+ module Outboxable
3
+ def self.included(base)
4
+ base.extend ClassMethods
5
+
6
+ base.class_eval do
7
+ has_one :message, class_name: "::Outboxer::Message", as: :outbox_message,
8
+ dependent: :destroy
9
+
10
+ after_create :create_outbox_message!
11
+ end
12
+ end
13
+
14
+ def create_outbox_message!
15
+ Message.create!(message: self, status: Message::STATUS[:unpublished])
16
+ end
17
+
18
+ module ClassMethods
19
+ end
20
+ end
21
+ end
@@ -54,14 +54,14 @@ module Outboxer
54
54
  def dequeue(backoff:)
55
55
  retry_on_error(backoff: backoff) do
56
56
  ActiveRecord::Base.transaction do
57
- message = Models::Message
58
- .where(status: Models::Message::STATUS[:unpublished])
57
+ message = Message
58
+ .where(status: Message::STATUS[:unpublished])
59
59
  .order(created_at: :asc)
60
60
  .limit(1)
61
61
  .lock("FOR UPDATE SKIP LOCKED")
62
62
  .first
63
63
 
64
- message&.update!(status: Models::Message::STATUS[:publishing])
64
+ message&.update!(status: Message::STATUS[:publishing])
65
65
 
66
66
  message
67
67
  end
@@ -81,7 +81,7 @@ module Outboxer
81
81
 
82
82
  retry_on_error(backoff: backoff) do
83
83
  ActiveRecord::Base.transaction do
84
- outboxer_message.update!(status: Models::Message::STATUS[:failed])
84
+ outboxer_message.update!(status: Message::STATUS[:failed])
85
85
 
86
86
  outboxer_message.exceptions.create!(
87
87
  class_name: exception.class.name,
@@ -1,3 +1,3 @@
1
1
  module Outboxer
2
- VERSION = "0.1.3".freeze
2
+ VERSION = "0.1.6"
3
3
  end
data/lib/outboxer.rb CHANGED
@@ -2,14 +2,12 @@ require "active_support"
2
2
 
3
3
  require_relative "outboxer/version"
4
4
  require_relative "outboxer/railtie" if defined?(Rails)
5
- require_relative "outboxer/models/outboxable"
6
- require_relative "outboxer/models/message"
7
- require_relative "outboxer/models/exception"
5
+
6
+ require_relative "outboxer/outboxable"
7
+ require_relative "outboxer/message"
8
+ require_relative "outboxer/exception"
8
9
 
9
10
  require_relative "outboxer/publisher"
10
11
 
11
12
  module Outboxer
12
- Outboxable = Models::Outboxable
13
- Message = Models::Message
14
- Exception = Models::Exception
15
13
  end
data/outboxer.gemspec CHANGED
@@ -15,7 +15,7 @@ Gem::Specification.new do |spec|
15
15
  spec.metadata["homepage_uri"] = spec.homepage
16
16
  spec.metadata["source_code_uri"] = "https://github.com/fast-programmer/outboxer"
17
17
  spec.metadata["documentation_uri"] = "https://rubydoc.info/github/fast-programmer/outboxer/master"
18
- spec.metadata["changelog_uri"] = "https://github.com/fast-programmer/outboxer/blob/main/CHANGELOG.md"
18
+ spec.metadata["changelog_uri"] = "https://github.com/fast-programmer/outboxer/blob/master/CHANGELOG.md"
19
19
  spec.metadata["rubygems_mfa_required"] = "true"
20
20
 
21
21
  spec.files = Dir.chdir(__dir__) do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: outboxer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Mikulasev
@@ -43,9 +43,9 @@ files:
43
43
  - generators/outboxer/templates/migrations/create_outboxer_exceptions.rb
44
44
  - generators/outboxer/templates/migrations/create_outboxer_messages.rb
45
45
  - lib/outboxer.rb
46
- - lib/outboxer/models/exception.rb
47
- - lib/outboxer/models/message.rb
48
- - lib/outboxer/models/outboxable.rb
46
+ - lib/outboxer/exception.rb
47
+ - lib/outboxer/message.rb
48
+ - lib/outboxer/outboxable.rb
49
49
  - lib/outboxer/publisher.rb
50
50
  - lib/outboxer/railtie.rb
51
51
  - lib/outboxer/version.rb
@@ -58,7 +58,7 @@ metadata:
58
58
  homepage_uri: https://github.com/fast-programmer/outboxer
59
59
  source_code_uri: https://github.com/fast-programmer/outboxer
60
60
  documentation_uri: https://rubydoc.info/github/fast-programmer/outboxer/master
61
- changelog_uri: https://github.com/fast-programmer/outboxer/blob/main/CHANGELOG.md
61
+ changelog_uri: https://github.com/fast-programmer/outboxer/blob/master/CHANGELOG.md
62
62
  rubygems_mfa_required: 'true'
63
63
  post_install_message:
64
64
  rdoc_options: []
@@ -1,11 +0,0 @@
1
- require "active_record"
2
-
3
- module Outboxer
4
- module Models
5
- class Exception < ::ActiveRecord::Base
6
- self.table_name = :outboxer_exceptions
7
-
8
- belongs_to :message, class_name: "::Outboxer::Models::Message"
9
- end
10
- end
11
- end
@@ -1,21 +0,0 @@
1
- require "active_record"
2
-
3
- module Outboxer
4
- module Models
5
- class Message < ::ActiveRecord::Base
6
- self.table_name = :outboxer_messages
7
-
8
- STATUS = {
9
- unpublished: "unpublished",
10
- publishing: "publishing",
11
- failed: "failed"
12
- }.freeze
13
-
14
- belongs_to :message, polymorphic: true
15
-
16
- has_many :exceptions, -> { order(created_at: :asc) },
17
- class_name: "::Outboxer::Models::Exception",
18
- dependent: :destroy
19
- end
20
- end
21
- end
@@ -1,23 +0,0 @@
1
- module Outboxer
2
- module Models
3
- module Outboxable
4
- def self.included(base)
5
- base.extend ClassMethods
6
-
7
- base.class_eval do
8
- has_one :message, class_name: "Outboxer::Models::Message", as: :outbox_message,
9
- dependent: :destroy
10
-
11
- after_create :create_outbox_message!
12
- end
13
- end
14
-
15
- def create_outbox_message!
16
- Models::Message.create!(message: self, status: Models::Message::STATUS[:unpublished])
17
- end
18
-
19
- module ClassMethods
20
- end
21
- end
22
- end
23
- end