concurrent_rails 0.1.5 → 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: 87ad625b78cf38b613761735ca3ca8ad7dbf12f16f807290082bf1a7081ad383
4
- data.tar.gz: 723e320ec707747381e1d8b7f6b81f801c02643d2d18f4e714330041eeff49a5
3
+ metadata.gz: 83f0c6f9839dd61c1148dcb02f2a0c4b12d61294af1f7f4f86487f0f0d5f3907
4
+ data.tar.gz: 2a2a8eddbad74a6a56a6ad7f3b28b46c7c8c1ba7a0c44a30c0a3d0b25496072d
5
5
  SHA512:
6
- metadata.gz: 0fa50d7cfad90990b29f75bdcf3f6e15dc8252774259b4d65af62f37cd36a4ed46b0ff5b091a39a8f0e0f54625e90d5444489dd6d4ea13b44d9c474d783c56d2
7
- data.tar.gz: 3a75c1ccd1f4821827359c672c991b0ef071a2dc41a274447c1117c51bc52bc9cc41fec35cde38ef6d79b31d4047b419240ae99775c415bff66240433b05f340
6
+ metadata.gz: 8bb76a46611d36597321ec8b4fd700a86a844f1f489791005e845c2947893c83652d2675d359ccc628fdc810606ade432e58c1406aa410412e1f80f444a33509
7
+ data.tar.gz: a5e3a549eb26a86fb9887c3d86ce4aeea71bd604ac8fb42a204b56063d34b7c914f3518bd189fd38a9336f36fc762049905919812eb12d1373cb24139adba76c
data/README.md CHANGED
@@ -143,7 +143,7 @@ For more information on how Futures work and how Rails handle multithread check
143
143
  Add this line to your application's Gemfile:
144
144
 
145
145
  ```ruby
146
- gem 'concurrent_rails', '~> 0.1.5'
146
+ gem 'concurrent_rails', '~> 0.1.6'
147
147
  ```
148
148
 
149
149
  And then execute:
@@ -1,10 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'concurrent_rails/version'
4
- require 'concurrent_rails/railtie'
5
3
  require 'concurrent_rails/future'
6
4
  require 'concurrent_rails/multi'
7
5
  require 'concurrent_rails/promises'
6
+ require 'concurrent_rails/railtie'
7
+ require 'concurrent_rails/version'
8
8
 
9
9
  module ConcurrentRails
10
10
  end
@@ -4,7 +4,7 @@ module ConcurrentRails
4
4
  class Future
5
5
  extend Forwardable
6
6
 
7
- def initialize(executor: :io, &block)
7
+ def initialize(executor: :fast, &block)
8
8
  @executor = executor
9
9
  @future = run_on_rails(block)
10
10
  end
@@ -18,13 +18,9 @@ module ConcurrentRails
18
18
  %i[value value!].each do |method_name|
19
19
  define_method method_name do
20
20
  Rails.application.executor.wrap do
21
- result = nil
22
-
23
21
  ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
24
- result = future.__send__(method_name)
22
+ future.__send__(method_name)
25
23
  end
26
-
27
- result
28
24
  end
29
25
  end
30
26
  end
@@ -30,6 +30,10 @@ module ConcurrentRails
30
30
  futures.map(&:value)
31
31
  end
32
32
 
33
+ def compute!
34
+ futures.map(&:value!)
35
+ end
36
+
33
37
  def complete?
34
38
  futures.all?(&:complete?)
35
39
  end
@@ -2,11 +2,17 @@
2
2
 
3
3
  module ConcurrentRails
4
4
  class Promises
5
- include Concurrent::Promises::FactoryMethods
6
5
  extend Forwardable
6
+ include Concurrent::Promises::FactoryMethods
7
+
8
+ class << self
9
+ def future(*args, &task)
10
+ future_on(:fast, *args, &task)
11
+ end
7
12
 
8
- def self.future(*args, &task)
9
- new.run_on_rails(*args, &task)
13
+ def future_on(executor, *args, &task)
14
+ new.with_rails(executor, *args, &task)
15
+ end
10
16
  end
11
17
 
12
18
  def then(*args, &task)
@@ -18,22 +24,18 @@ module ConcurrentRails
18
24
  end
19
25
 
20
26
  %i[value value!].each do |method_name|
21
- define_method method_name do
27
+ define_method method_name do |timeout = nil, timeout_value = nil|
22
28
  Rails.application.executor.wrap do
23
- result = nil
24
-
25
29
  ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
26
- result = future_instance.__send__(method_name)
30
+ future_instance.__send__(method_name, timeout, timeout_value)
27
31
  end
28
-
29
- result
30
32
  end
31
33
  end
32
34
  end
33
35
 
34
- def run_on_rails(*args, &task)
36
+ def with_rails(executor, *args, &task)
35
37
  @future_instance = Rails.application.executor.wrap do
36
- future_on(default_executor, *args, &task)
38
+ future_on(executor, *args, &task)
37
39
  end
38
40
 
39
41
  self
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ConcurrentRails
4
- VERSION = '0.1.5'
4
+ VERSION = '0.1.6'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: concurrent_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luiz Eduardo Kowalski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-24 00:00:00.000000000 Z
11
+ date: 2021-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails