outboxer 0.1.0 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,110 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Top Level Namespace
8
+
9
+ &mdash; Documentation by YARD 0.9.34
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "";
19
+ relpath = '';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="_index.html">Index</a> &raquo;
40
+
41
+
42
+ <span class="title">Top Level Namespace</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Top Level Namespace
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+ </div>
80
+
81
+ <h2>Defined Under Namespace</h2>
82
+ <p class="children">
83
+
84
+
85
+ <strong class="modules">Modules:</strong> <span class='object_link'><a href="Outboxer.html" title="Outboxer (module)">Outboxer</a></span>
86
+
87
+
88
+
89
+
90
+ </p>
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
+ </div>
101
+
102
+ <div id="footer">
103
+ Generated on Sat Aug 5 04:37:46 2023 by
104
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
105
+ 0.9.34 (ruby-2.7.8).
106
+ </div>
107
+
108
+ </div>
109
+ </body>
110
+ </html>
@@ -3,5 +3,12 @@
3
3
  require_relative "../config/environment"
4
4
 
5
5
  Outboxer::Publisher.publish do |args|
6
- # Worker.perform_async({ message_id: args.message.id })
6
+ logger = args.logger
7
+ message = args.message
8
+
9
+ logger.info("[#{message.id}] publishing")
10
+
11
+ HardJob.perform_async({ "message_id" => message.id })
12
+
13
+ logger.info("[#{message.id}] published")
7
14
  end
@@ -14,7 +14,8 @@ module Outboxer
14
14
  belongs_to :message, polymorphic: true
15
15
 
16
16
  has_many :exceptions, -> { order(created_at: :asc) },
17
- class_name: "::Outboxer::Models::Exception"
17
+ class_name: "::Outboxer::Models::Exception",
18
+ dependent: :destroy
18
19
  end
19
20
  end
20
21
  end
@@ -9,6 +9,17 @@ module Outboxer
9
9
 
10
10
  Args = Struct.new(:message, :logger)
11
11
 
12
+ # This method initiates the publishing process. It dequeues the messages one by one
13
+ # and yields to a block that should contain the publishing logic.
14
+ #
15
+ # @param [Integer] poll
16
+ # Sleep time in seconds between polling the queue when it's empty.
17
+ #
18
+ # @param [Proc] backoff
19
+ # A Proc that takes the current backoff time and returns the new backoff time.
20
+ #
21
+ # @yieldparam [Args] args
22
+ # An Args object containing the message to publish and a logger.
12
23
  def publish(poll: 1, backoff: ->(current_backoff) { [current_backoff * 2, 5 * 60].min })
13
24
  @publishing = true
14
25
 
@@ -100,6 +111,12 @@ module Outboxer
100
111
  end
101
112
  end
102
113
 
114
+ # Stops the publishing process.
115
+ #
116
+ # @note This method will stop the current message publishing process
117
+ # It is a safe way to interrupt the publishing process at any point.
118
+ #
119
+ # @return [void]
103
120
  def stop
104
121
  @publishing = false
105
122
  end
@@ -109,5 +126,7 @@ module Outboxer
109
126
 
110
127
  stop
111
128
  end
129
+
130
+ private_class_method :retry_on_error, :dequeue, :published, :failed
112
131
  end
113
132
  end
@@ -1,3 +1,3 @@
1
1
  module Outboxer
2
- VERSION = "0.1.0".freeze
2
+ VERSION = "0.1.2".freeze
3
3
  end
data/lib/outboxer.rb CHANGED
@@ -10,4 +10,6 @@ require_relative "outboxer/publisher"
10
10
 
11
11
  module Outboxer
12
12
  Outboxable = Models::Outboxable
13
+ Message = Models::Message
14
+ Exception = Models::Exception
13
15
  end
data/outboxer.gemspec CHANGED
@@ -15,6 +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["changelog_uri"] = "Put your gem's CHANGELOG.md URL here."
18
+ spec.metadata['yard.run'] = 'yard'
18
19
  spec.metadata["rubygems_mfa_required"] = "true"
19
20
 
20
21
  spec.files = Dir.chdir(__dir__) do
@@ -28,6 +29,5 @@ Gem::Specification.new do |spec|
28
29
  spec.require_paths = ["lib"]
29
30
 
30
31
  spec.add_dependency "activerecord", "~> 7.0"
31
- spec.add_dependency "pg", "~> 1.5"
32
32
  end
33
33
  # rubocop:enable Layout/LineLength
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.0
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Mikulasev
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '7.0'
27
- - !ruby/object:Gem::Dependency
28
- name: pg
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '1.5'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '1.5'
41
27
  description:
42
28
  email:
43
29
  - adam@fastprogrammer.co
@@ -52,6 +38,29 @@ files:
52
38
  - LICENSE.txt
53
39
  - README.md
54
40
  - Rakefile
41
+ - doc/Outboxer.html
42
+ - doc/Outboxer/Models.html
43
+ - doc/Outboxer/Models/Exception.html
44
+ - doc/Outboxer/Models/Message.html
45
+ - doc/Outboxer/Models/Outboxable.html
46
+ - doc/Outboxer/Models/Outboxable/ClassMethods.html
47
+ - doc/Outboxer/Publisher.html
48
+ - doc/Outboxer/Publisher/Args.html
49
+ - doc/Outboxer/Railtie.html
50
+ - doc/_index.html
51
+ - doc/class_list.html
52
+ - doc/css/common.css
53
+ - doc/css/full_list.css
54
+ - doc/css/style.css
55
+ - doc/file.README.html
56
+ - doc/file_list.html
57
+ - doc/frames.html
58
+ - doc/index.html
59
+ - doc/js/app.js
60
+ - doc/js/full_list.js
61
+ - doc/js/jquery.js
62
+ - doc/method_list.html
63
+ - doc/top-level-namespace.html
55
64
  - generators/outboxer/install_generator.rb
56
65
  - generators/outboxer/templates/bin/publisher.rb
57
66
  - generators/outboxer/templates/migrations/create_outboxer_exceptions.rb
@@ -71,6 +80,7 @@ licenses:
71
80
  metadata:
72
81
  homepage_uri: https://github.com/fast-programmer/outboxer
73
82
  source_code_uri: https://github.com/fast-programmer/outboxer
83
+ yard.run: yard
74
84
  rubygems_mfa_required: 'true'
75
85
  post_install_message:
76
86
  rdoc_options: []