maybe_later 0.0.3 → 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d63ae1916bd6a110d2eb3a3818aebfd98eddbc44787b4e4d05b52fab195ec3d1
4
- data.tar.gz: 3e829f5587905276f61cdbfd93d0e7235e6c68dc9131866ab280d5ac85e463f5
3
+ metadata.gz: acd7c4af474d9ccd6ed38814145b1a4df0b2185ff13359f9ab04d0f2761e0aa2
4
+ data.tar.gz: 8fa43fe122c043094904189724798d3def150b5ca1469912662f037de0ba2dcf
5
5
  SHA512:
6
- metadata.gz: 158a2177f00c6d37972137360242da044ff165b21246d825230a8bb64aee54e8a1c717a6f1e97dbc03ec37a5be6cce3e631d3c4820464471f5adcae5471057d0
7
- data.tar.gz: c65819bb29ef30d32322fb4297515697f9774baf037fcf44203f3c625826681d612fbe991f53087b38365dc3caaa41f2cee30b3c82ecbff671e276ff33266164
6
+ metadata.gz: bbefe63d4710db4b36aa4b628e25e0a977922675695a3c9501c5ecc9d8ab9f851906f2ed53cc3d1e3c095c01e96bede99a7976c20d25ef2e4bf8e5dd5ceb8fe1
7
+ data.tar.gz: 176f10b2bd8aa8a7a6e5342d566a0df041ef33e4052b5f6333d75f4c61304892d4ac312d97127687c2b487250e4c84f946c8450360117c2e2847cd6987543582
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## [0.0.4] - 2022-01-24
2
+
3
+ - Add `invoke_even_if_server_is_unsupported` option to ensure tasks are invoked
4
+ even if the server doesn't support rack.after_reply
5
+
1
6
  ## [0.0.3] - 2022-01-21
2
7
 
3
8
  - Fix a bug where async tasks' after_each callbacks were called rack.after_reply
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- maybe_later (0.0.3)
4
+ maybe_later (0.0.4)
5
5
  concurrent-ruby (~> 1.1.9)
6
6
  railties (>= 6.0.0)
7
7
 
data/README.md CHANGED
@@ -94,6 +94,10 @@ MaybeLater.config do |config|
94
94
 
95
95
  # How many threads to allocate to the fixed thread pool (default: 5)
96
96
  config.max_threads = 5
97
+
98
+ # If set to true, will invoke the after_reply tasks even if the server doesn't
99
+ # provide an array of rack.after_reply array
100
+ config.invoke_even_if_server_is_unsupported = false
97
101
  end
98
102
  ```
99
103
 
@@ -1,12 +1,14 @@
1
1
  module MaybeLater
2
2
  class Config
3
- attr_accessor :after_each, :on_error, :inline_by_default, :max_threads
3
+ attr_accessor :after_each, :on_error, :inline_by_default, :max_threads,
4
+ :invoke_even_if_server_is_unsupported
4
5
 
5
6
  def initialize
6
7
  @after_each = nil
7
8
  @on_error = nil
8
9
  @inline_by_default = false
9
10
  @max_threads = 5
11
+ @invoke_even_if_server_is_unsupported = false
10
12
  end
11
13
  end
12
14
  end
@@ -7,12 +7,29 @@ module MaybeLater
7
7
  end
8
8
 
9
9
  def call(env)
10
+ config = MaybeLater.config
11
+
10
12
  status, headers, body = @app.call(env)
11
13
  if Store.instance.callbacks.any?
12
- env[RACK_AFTER_REPLY] ||= []
13
- env[RACK_AFTER_REPLY] << -> {
14
+ if env.key?(RACK_AFTER_REPLY)
15
+ env[RACK_AFTER_REPLY] << -> {
16
+ RunsCallbacks.new.call
17
+ }
18
+ elsif !config.invoke_even_if_server_is_unsupported
19
+ warn <<~MSG
20
+ This server may not support '#{RACK_AFTER_REPLY}' callbacks. To
21
+ ensure that your tasks are executed, consider enabling:
22
+
23
+ config.invoke_even_if_server_is_unsupported = true
24
+
25
+ Note that this option, when combined with `inline: true` can result
26
+ in delayed flushing of HTTP responses by the server (defeating the
27
+ purpose of the gem.
28
+ MSG
29
+ else
14
30
  RunsCallbacks.new.call
15
- }
31
+ end
32
+
16
33
  if Store.instance.callbacks.any? { |cb| cb.inline }
17
34
  headers["Connection"] = "close"
18
35
  end
@@ -1,3 +1,3 @@
1
1
  module MaybeLater
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: maybe_later
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Searls
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-01-21 00:00:00.000000000 Z
11
+ date: 2022-01-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties