rosarium 0.1.4 → 0.1.5

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
  SHA1:
3
- metadata.gz: 4d29d25a2dda69339736325662c95e47aa89f72a
4
- data.tar.gz: cedaeb3c52e8e7638b089e24570200ef726d4dd5
3
+ metadata.gz: b929d183760e88db677cb8b244179733aadc3f5e
4
+ data.tar.gz: 8fd7a19f473d4555108d6317b3b3a75368411d81
5
5
  SHA512:
6
- metadata.gz: e709529f21c3de794fd607f3c3a28561e0b3369584accdff616b7b35a516a82617c901380a95a40c34668242df4d7b7a49179c7d3932ae24486716a7e95e7803
7
- data.tar.gz: 2d1f44d108baa337a810726731277730d8f2b07488358ada586dca0c9a33d268db02d6f263364cad1002086d23134c4cafd56249d56165aafb64f677a45d3588
6
+ metadata.gz: 566a7cfd9743d343b6c25bb058c079617ad25a7ae82c16f7905cb3679b667b9c21d3881085beb6593863398d84fc7dfd93f409ca1dc3f43ae8e25ee291400e5a
7
+ data.tar.gz: 395d6da1824396ee9c9ba915054b5c01a2343645d95035edee0d3498407bc907df2a71350379a39f2500911e903fa907492c99ba057b7f45806d04786f6309d5
@@ -21,16 +21,9 @@ module Rosarium
21
21
  deferred.promise
22
22
  end
23
23
 
24
+ @@resolved = resolve(nil)
24
25
  def self.execute(&block)
25
- deferred = defer
26
- EXECUTOR.submit do
27
- begin
28
- deferred.resolve block.call
29
- rescue Exception => e
30
- deferred.reject e
31
- end
32
- end
33
- deferred.promise
26
+ @@resolved.then { block.call }
34
27
  end
35
28
 
36
29
  def self.all_settled(promises)
@@ -87,16 +80,20 @@ module Rosarium
87
80
  on_rejected ||= DEFAULT_ON_REJECT
88
81
 
89
82
  on_resolution do
90
- begin
91
- deferred.resolve(
92
- if fulfilled?
93
- on_fulfilled.call value
94
- else
95
- on_rejected.call reason
96
- end
97
- )
98
- rescue Exception => e
99
- deferred.reject e
83
+ EXECUTOR.submit do
84
+ begin
85
+ deferred.resolve(
86
+ if fulfilled?
87
+ # User-supplied code
88
+ on_fulfilled.call value
89
+ else
90
+ # User-supplied code
91
+ on_rejected.call reason
92
+ end
93
+ )
94
+ rescue Exception => e
95
+ deferred.reject e
96
+ end
100
97
  end
101
98
  end
102
99
 
@@ -69,10 +69,10 @@ module Rosarium
69
69
 
70
70
  def wait
71
71
  on_resolution do
72
- @mutex.synchronize { @condition.broadcast }
72
+ synchronize { @condition.broadcast }
73
73
  end
74
74
 
75
- @mutex.synchronize do
75
+ synchronize do
76
76
  loop do
77
77
  return if @state == :fulfilled or @state == :rejected
78
78
  @condition.wait @mutex
@@ -68,4 +68,11 @@ describe Rosarium::Promise do
68
68
  end
69
69
  end
70
70
 
71
+ it "uses the executor even if immediately callable" do
72
+ deferred = Rosarium::Promise.resolve(nil).then { sleep 0.1; 7 }
73
+ check_pending deferred
74
+ sleep 0.2
75
+ check_fulfilled deferred, 7
76
+ end
77
+
71
78
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rosarium
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rachel Evans