flor 0.17.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +48 -0
- data/CREDITS.md +1 -0
- data/LICENSE.txt +1 -1
- data/Makefile +1 -1
- data/README.md +34 -2
- data/flor.gemspec +8 -9
- data/lib/flor.rb +3 -2
- data/lib/flor/colours.rb +5 -3
- data/lib/flor/conf.rb +1 -0
- data/lib/flor/core.rb +9 -8
- data/lib/flor/core/executor.rb +25 -22
- data/lib/flor/core/node.rb +1 -13
- data/lib/flor/core/procedure.rb +57 -12
- data/lib/flor/core/texecutor.rb +35 -3
- data/lib/flor/djan.rb +1 -0
- data/lib/flor/errors.rb +1 -0
- data/lib/flor/flor.rb +173 -29
- data/lib/flor/id.rb +5 -1
- data/lib/flor/log.rb +20 -8
- data/lib/flor/migrations/0001_tables.rb +1 -0
- data/lib/flor/migrations/0002_cunit_and_munit.rb +1 -0
- data/lib/flor/migrations/0003_timer_onid_bnid.rb +1 -0
- data/lib/flor/migrations/0004_trap_bnid.rb +1 -0
- data/lib/flor/migrations/0005_pointer_content.rb +1 -0
- data/lib/flor/parser.rb +19 -11
- data/lib/flor/pcore/_apply.rb +1 -0
- data/lib/flor/pcore/_arr.rb +1 -0
- data/lib/flor/pcore/_atom.rb +1 -0
- data/lib/flor/pcore/_att.rb +1 -0
- data/lib/flor/pcore/_coll.rb +1 -0
- data/lib/flor/pcore/_dmute.rb +5 -1
- data/lib/flor/pcore/_dol.rb +1 -0
- data/lib/flor/pcore/_dqs.rb +1 -0
- data/lib/flor/pcore/_dump.rb +1 -0
- data/lib/flor/pcore/_err.rb +1 -0
- data/lib/flor/pcore/_head.rb +1 -0
- data/lib/flor/pcore/_obj.rb +1 -0
- data/lib/flor/pcore/_pat_.rb +1 -0
- data/lib/flor/pcore/_pat_arr.rb +1 -0
- data/lib/flor/pcore/_pat_guard.rb +1 -0
- data/lib/flor/pcore/_pat_obj.rb +1 -0
- data/lib/flor/pcore/_pat_or.rb +1 -0
- data/lib/flor/pcore/_pat_regex.rb +1 -0
- data/lib/flor/pcore/_ref.rb +1 -0
- data/lib/flor/pcore/_rxs.rb +1 -0
- data/lib/flor/pcore/_skip.rb +1 -0
- data/lib/flor/pcore/_val.rb +1 -0
- data/lib/flor/pcore/all.rb +1 -0
- data/lib/flor/pcore/andor.rb +1 -0
- data/lib/flor/pcore/any.rb +1 -0
- data/lib/flor/pcore/apply.rb +1 -0
- data/lib/flor/pcore/arith.rb +1 -0
- data/lib/flor/pcore/array_qmark.rb +1 -0
- data/lib/flor/pcore/break.rb +13 -1
- data/lib/flor/pcore/case.rb +1 -0
- data/lib/flor/pcore/cmp.rb +1 -0
- data/lib/flor/pcore/collect.rb +2 -1
- data/lib/flor/pcore/cond.rb +1 -0
- data/lib/flor/pcore/cursor.rb +45 -3
- data/lib/flor/pcore/define.rb +1 -0
- data/lib/flor/pcore/detect.rb +1 -0
- data/lib/flor/pcore/do_return.rb +1 -0
- data/lib/flor/pcore/each.rb +1 -0
- data/lib/flor/pcore/echo.rb +1 -0
- data/lib/flor/pcore/empty.rb +1 -0
- data/lib/flor/pcore/fail.rb +1 -0
- data/lib/flor/pcore/filter.rb +1 -0
- data/lib/flor/pcore/find.rb +1 -0
- data/lib/flor/pcore/flatten.rb +1 -0
- data/lib/flor/pcore/for_each.rb +1 -0
- data/lib/flor/pcore/if.rb +1 -0
- data/lib/flor/pcore/includes.rb +1 -0
- data/lib/flor/pcore/inject.rb +1 -0
- data/lib/flor/pcore/iterator.rb +1 -0
- data/lib/flor/pcore/keys.rb +1 -0
- data/lib/flor/pcore/length.rb +1 -0
- data/lib/flor/pcore/loop.rb +1 -0
- data/lib/flor/pcore/map.rb +1 -0
- data/lib/flor/pcore/match.rb +1 -0
- data/lib/flor/pcore/matchr.rb +1 -0
- data/lib/flor/pcore/max.rb +1 -0
- data/lib/flor/pcore/merge.rb +1 -0
- data/lib/flor/pcore/move.rb +1 -0
- data/lib/flor/pcore/noeval.rb +1 -0
- data/lib/flor/pcore/noret.rb +1 -0
- data/lib/flor/pcore/not.rb +1 -0
- data/lib/flor/pcore/on.rb +34 -9
- data/lib/flor/pcore/on_cancel.rb +1 -0
- data/lib/flor/pcore/on_error.rb +1 -0
- data/lib/flor/pcore/push.rb +1 -0
- data/lib/flor/pcore/rand.rb +1 -0
- data/lib/flor/pcore/range.rb +1 -0
- data/lib/flor/pcore/reduce.rb +1 -0
- data/lib/flor/pcore/return.rb +1 -0
- data/lib/flor/pcore/reverse.rb +1 -0
- data/lib/flor/pcore/select.rb +1 -0
- data/lib/flor/pcore/sequence.rb +49 -0
- data/lib/flor/pcore/set.rb +1 -0
- data/lib/flor/pcore/shuffle.rb +1 -0
- data/lib/flor/pcore/slice.rb +1 -0
- data/lib/flor/pcore/sort.rb +1 -0
- data/lib/flor/pcore/sort_by.rb +1 -0
- data/lib/flor/pcore/split.rb +1 -0
- data/lib/flor/pcore/stall.rb +1 -0
- data/lib/flor/pcore/strings.rb +1 -0
- data/lib/flor/pcore/timestamp.rb +1 -0
- data/lib/flor/pcore/to_array.rb +1 -0
- data/lib/flor/pcore/twig.rb +1 -0
- data/lib/flor/pcore/type_of.rb +1 -0
- data/lib/flor/pcore/until.rb +1 -0
- data/lib/flor/punit/abort.rb +50 -0
- data/lib/flor/punit/c_collect.rb +1 -0
- data/lib/flor/punit/c_each.rb +19 -0
- data/lib/flor/punit/c_for_each.rb +2 -1
- data/lib/flor/punit/c_iterator.rb +2 -1
- data/lib/flor/punit/c_map.rb +1 -0
- data/lib/flor/punit/cancel.rb +10 -1
- data/lib/flor/punit/concurrence.rb +7 -5
- data/lib/flor/punit/cron.rb +1 -0
- data/lib/flor/punit/do_trap.rb +1 -0
- data/lib/flor/punit/every.rb +1 -0
- data/lib/flor/punit/graft.rb +1 -0
- data/lib/flor/punit/{m_ram.rb → m_receive_and_merge.rb} +5 -4
- data/lib/flor/punit/on_timeout.rb +1 -0
- data/lib/flor/punit/part.rb +1 -0
- data/lib/flor/punit/schedule.rb +1 -0
- data/lib/flor/punit/signal.rb +30 -5
- data/lib/flor/punit/sleep.rb +1 -0
- data/lib/flor/punit/task.rb +9 -2
- data/lib/flor/punit/trace.rb +1 -0
- data/lib/flor/punit/trap.rb +41 -1
- data/lib/flor/to_string.rb +1 -0
- data/lib/flor/tools/env.rb +1 -0
- data/lib/flor/tools/firb.rb +33 -0
- data/lib/flor/tools/shell.rb +13 -3
- data/lib/flor/tools/shell_out.rb +1 -0
- data/lib/flor/tt.rb +98 -0
- data/lib/flor/unit.rb +3 -0
- data/lib/flor/unit/caller.rb +158 -23
- data/lib/flor/unit/caller_jruby.rb +133 -0
- data/lib/flor/unit/dump.rb +36 -0
- data/lib/flor/unit/executor.rb +28 -18
- data/lib/flor/unit/ganger.rb +30 -18
- data/lib/flor/unit/gangers.rb +125 -0
- data/lib/flor/unit/hloader.rb +34 -7
- data/lib/flor/unit/hook.rb +3 -0
- data/lib/flor/unit/hooker.rb +32 -15
- data/lib/flor/unit/journal.rb +23 -0
- data/lib/flor/unit/loader.rb +142 -15
- data/lib/flor/unit/logger.rb +35 -7
- data/lib/flor/unit/models.rb +48 -10
- data/lib/flor/unit/models/execution.rb +51 -0
- data/lib/flor/unit/models/message.rb +6 -0
- data/lib/flor/unit/models/pointer.rb +1 -0
- data/lib/flor/unit/models/timer.rb +1 -0
- data/lib/flor/unit/models/trace.rb +1 -0
- data/lib/flor/unit/models/trap.rb +15 -6
- data/lib/flor/unit/scheduler.rb +211 -61
- data/lib/flor/unit/spooler.rb +1 -0
- data/lib/flor/unit/storage.rb +117 -73
- data/lib/flor/unit/taskers.rb +115 -1
- data/lib/flor/unit/waiter.rb +22 -17
- data/lib/flor/unit/wlist.rb +19 -8
- metadata +26 -45
data/lib/flor/unit/waiter.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
|
2
3
|
module Flor
|
3
4
|
|
@@ -22,7 +23,7 @@ module Flor
|
|
22
23
|
@executor = nil
|
23
24
|
end
|
24
25
|
|
25
|
-
ROW_PSEUDO_POINTS = %w[ status tag tasker var variable ]
|
26
|
+
ROW_PSEUDO_POINTS = %w[ status tag tasker var variable ].freeze
|
26
27
|
# "tasker", not "task", since "task" is already a message point
|
27
28
|
|
28
29
|
def row_waiter?
|
@@ -52,7 +53,7 @@ module Flor
|
|
52
53
|
|
53
54
|
@mutex.synchronize do
|
54
55
|
|
55
|
-
return false unless
|
56
|
+
return false unless msg_match?(message)
|
56
57
|
|
57
58
|
@serie.shift
|
58
59
|
return false if @serie.any?
|
@@ -150,7 +151,7 @@ module Flor
|
|
150
151
|
|
151
152
|
protected
|
152
153
|
|
153
|
-
def
|
154
|
+
def msg_match?(message)
|
154
155
|
|
155
156
|
mpoint = message['point']
|
156
157
|
|
@@ -209,7 +210,7 @@ module Flor
|
|
209
210
|
(name == nil || ptr.name == name) &&
|
210
211
|
(value == nil || ptr.value == value.to_s) }
|
211
212
|
end
|
212
|
-
alias row_match_variable?
|
213
|
+
alias row_match_variable? row_match_var?
|
213
214
|
|
214
215
|
def row_match_tasker?(unit, rs, nid, (name, value))
|
215
216
|
|
@@ -246,15 +247,7 @@ module Flor
|
|
246
247
|
end
|
247
248
|
end
|
248
249
|
|
249
|
-
|
250
|
-
%r{
|
251
|
-
\A
|
252
|
-
([0-9_\-]+)?[ ]*
|
253
|
-
(
|
254
|
-
[a-z]+(?::[^:|;,\s]+){0,2}
|
255
|
-
(?:[|, ][a-z]+(:[^:|;,\s]+){0,2})*
|
256
|
-
)\z
|
257
|
-
}x
|
250
|
+
PT_REX = /[a-z]+(?::[^:|,\s]+){0,2}/.freeze
|
258
251
|
|
259
252
|
def parse_serie(s)
|
260
253
|
|
@@ -262,11 +255,23 @@ module Flor
|
|
262
255
|
|
263
256
|
(s.is_a?(String) ? s.split(';') : s)
|
264
257
|
.collect { |ss|
|
265
|
-
|
258
|
+
|
259
|
+
k = StringScanner.new(ss.strip)
|
260
|
+
|
261
|
+
ni = k.scan(Flor::START_NID_REX)
|
262
|
+
|
263
|
+
k.scan(/\s*/)
|
264
|
+
|
265
|
+
pts = []; loop do
|
266
|
+
pt = k.scan(PT_REX); break unless pt
|
267
|
+
pts << pt
|
268
|
+
k.scan(/\s*[|,]\s*/)
|
269
|
+
end
|
270
|
+
|
266
271
|
fail ArgumentError.new(
|
267
|
-
"cannot parse #{ss.strip.inspect} wait directive") unless
|
268
|
-
|
269
|
-
[ ni,
|
272
|
+
"cannot parse #{ss.strip.inspect} wait directive") unless k.eos?
|
273
|
+
|
274
|
+
[ ni, pts ] }
|
270
275
|
end
|
271
276
|
end
|
272
277
|
end
|
data/lib/flor/unit/wlist.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
|
2
3
|
module Flor
|
3
4
|
|
@@ -11,6 +12,15 @@ module Flor
|
|
11
12
|
# `wtl_row_frequency`:
|
12
13
|
# sleep time between row waiter checks, defaults to 1
|
13
14
|
|
15
|
+
# Regular waiters are message waiters, they wait for a message
|
16
|
+
# that matches a pattern
|
17
|
+
#
|
18
|
+
# Row waiters are waiting for the pattern to realize in the database
|
19
|
+
# a better name would probably have been "query waiter".
|
20
|
+
# Row waiters need their own thread for checking at interval.
|
21
|
+
# Row waiters can live in a different Ruby process from the Ruby process
|
22
|
+
# performing the executions.
|
23
|
+
|
14
24
|
DEFAULT_TIMEOUT = Flor.env_i('FLOR_DEFAULT_TIMEOUT')
|
15
25
|
|
16
26
|
def initialize(unit)
|
@@ -42,18 +52,19 @@ module Flor
|
|
42
52
|
|
43
53
|
def notify(executor, message)
|
44
54
|
|
45
|
-
|
55
|
+
return [] unless message['consumed']
|
56
|
+
return [] if @msg_waiters.empty?
|
46
57
|
|
47
|
-
|
58
|
+
@mutex.synchronize do
|
48
59
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
60
|
+
to_remove =
|
61
|
+
@msg_waiters.each_with_object([]) do |w, a|
|
62
|
+
remove = w.notify(executor, message)
|
63
|
+
a << w if remove
|
64
|
+
end
|
53
65
|
|
54
66
|
@msg_waiters -= to_remove
|
55
|
-
|
56
|
-
end if message['consumed']
|
67
|
+
end
|
57
68
|
|
58
69
|
[] # no new messages
|
59
70
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: flor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Mettraux
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: munemo
|
@@ -17,9 +17,6 @@ dependencies:
|
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.0'
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 1.0.1
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -27,9 +24,6 @@ dependencies:
|
|
27
24
|
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
26
|
version: '1.0'
|
30
|
-
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 1.0.1
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: raabro
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -37,9 +31,6 @@ dependencies:
|
|
37
31
|
- - "~>"
|
38
32
|
- !ruby/object:Gem::Version
|
39
33
|
version: '1.1'
|
40
|
-
- - ">="
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
version: 1.1.5
|
43
34
|
type: :runtime
|
44
35
|
prerelease: false
|
45
36
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -47,29 +38,20 @@ dependencies:
|
|
47
38
|
- - "~>"
|
48
39
|
- !ruby/object:Gem::Version
|
49
40
|
version: '1.1'
|
50
|
-
- - ">="
|
51
|
-
- !ruby/object:Gem::Version
|
52
|
-
version: 1.1.5
|
53
41
|
- !ruby/object:Gem::Dependency
|
54
42
|
name: fugit
|
55
43
|
requirement: !ruby/object:Gem::Requirement
|
56
44
|
requirements:
|
57
45
|
- - "~>"
|
58
46
|
- !ruby/object:Gem::Version
|
59
|
-
version: '1.
|
60
|
-
- - ">="
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: 1.1.8
|
47
|
+
version: '1.2'
|
63
48
|
type: :runtime
|
64
49
|
prerelease: false
|
65
50
|
version_requirements: !ruby/object:Gem::Requirement
|
66
51
|
requirements:
|
67
52
|
- - "~>"
|
68
53
|
- !ruby/object:Gem::Version
|
69
|
-
version: '1.
|
70
|
-
- - ">="
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
version: 1.1.8
|
54
|
+
version: '1.2'
|
73
55
|
- !ruby/object:Gem::Dependency
|
74
56
|
name: dense
|
75
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -77,9 +59,6 @@ dependencies:
|
|
77
59
|
- - "~>"
|
78
60
|
- !ruby/object:Gem::Version
|
79
61
|
version: '1.1'
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: 1.1.6
|
83
62
|
type: :runtime
|
84
63
|
prerelease: false
|
85
64
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -87,51 +66,48 @@ dependencies:
|
|
87
66
|
- - "~>"
|
88
67
|
- !ruby/object:Gem::Version
|
89
68
|
version: '1.1'
|
90
|
-
- - ">="
|
91
|
-
- !ruby/object:Gem::Version
|
92
|
-
version: 1.1.6
|
93
69
|
- !ruby/object:Gem::Dependency
|
94
70
|
name: sequel
|
95
71
|
requirement: !ruby/object:Gem::Requirement
|
96
72
|
requirements:
|
97
73
|
- - "~>"
|
98
74
|
- !ruby/object:Gem::Version
|
99
|
-
version: '5'
|
75
|
+
version: '5.0'
|
100
76
|
type: :runtime
|
101
77
|
prerelease: false
|
102
78
|
version_requirements: !ruby/object:Gem::Requirement
|
103
79
|
requirements:
|
104
80
|
- - "~>"
|
105
81
|
- !ruby/object:Gem::Version
|
106
|
-
version: '5'
|
82
|
+
version: '5.0'
|
107
83
|
- !ruby/object:Gem::Dependency
|
108
84
|
name: rspec
|
109
85
|
requirement: !ruby/object:Gem::Requirement
|
110
86
|
requirements:
|
111
87
|
- - "~>"
|
112
88
|
- !ruby/object:Gem::Version
|
113
|
-
version: '3.
|
89
|
+
version: '3.8'
|
114
90
|
type: :development
|
115
91
|
prerelease: false
|
116
92
|
version_requirements: !ruby/object:Gem::Requirement
|
117
93
|
requirements:
|
118
94
|
- - "~>"
|
119
95
|
- !ruby/object:Gem::Version
|
120
|
-
version: '3.
|
96
|
+
version: '3.8'
|
121
97
|
- !ruby/object:Gem::Dependency
|
122
98
|
name: terminal-table
|
123
99
|
requirement: !ruby/object:Gem::Requirement
|
124
100
|
requirements:
|
125
|
-
- - "
|
101
|
+
- - "~>"
|
126
102
|
- !ruby/object:Gem::Version
|
127
|
-
version: '
|
103
|
+
version: '1.8'
|
128
104
|
type: :development
|
129
105
|
prerelease: false
|
130
106
|
version_requirements: !ruby/object:Gem::Requirement
|
131
107
|
requirements:
|
132
|
-
- - "
|
108
|
+
- - "~>"
|
133
109
|
- !ruby/object:Gem::Version
|
134
|
-
version: '
|
110
|
+
version: '1.8'
|
135
111
|
description: A Ruby workflow engine (ruote next generation)
|
136
112
|
email:
|
137
113
|
- jmettraux+flor@gmail.com
|
@@ -249,6 +225,7 @@ files:
|
|
249
225
|
- lib/flor/pcore/twig.rb
|
250
226
|
- lib/flor/pcore/type_of.rb
|
251
227
|
- lib/flor/pcore/until.rb
|
228
|
+
- lib/flor/punit/abort.rb
|
252
229
|
- lib/flor/punit/c_collect.rb
|
253
230
|
- lib/flor/punit/c_each.rb
|
254
231
|
- lib/flor/punit/c_for_each.rb
|
@@ -260,7 +237,7 @@ files:
|
|
260
237
|
- lib/flor/punit/do_trap.rb
|
261
238
|
- lib/flor/punit/every.rb
|
262
239
|
- lib/flor/punit/graft.rb
|
263
|
-
- lib/flor/punit/
|
240
|
+
- lib/flor/punit/m_receive_and_merge.rb
|
264
241
|
- lib/flor/punit/on_timeout.rb
|
265
242
|
- lib/flor/punit/part.rb
|
266
243
|
- lib/flor/punit/schedule.rb
|
@@ -271,12 +248,17 @@ files:
|
|
271
248
|
- lib/flor/punit/trap.rb
|
272
249
|
- lib/flor/to_string.rb
|
273
250
|
- lib/flor/tools/env.rb
|
251
|
+
- lib/flor/tools/firb.rb
|
274
252
|
- lib/flor/tools/shell.rb
|
275
253
|
- lib/flor/tools/shell_out.rb
|
254
|
+
- lib/flor/tt.rb
|
276
255
|
- lib/flor/unit.rb
|
277
256
|
- lib/flor/unit/caller.rb
|
257
|
+
- lib/flor/unit/caller_jruby.rb
|
258
|
+
- lib/flor/unit/dump.rb
|
278
259
|
- lib/flor/unit/executor.rb
|
279
260
|
- lib/flor/unit/ganger.rb
|
261
|
+
- lib/flor/unit/gangers.rb
|
280
262
|
- lib/flor/unit/hloader.rb
|
281
263
|
- lib/flor/unit/hook.rb
|
282
264
|
- lib/flor/unit/hooker.rb
|
@@ -296,16 +278,16 @@ files:
|
|
296
278
|
- lib/flor/unit/taskers.rb
|
297
279
|
- lib/flor/unit/waiter.rb
|
298
280
|
- lib/flor/unit/wlist.rb
|
299
|
-
homepage:
|
281
|
+
homepage: https://github.com/floraison
|
300
282
|
licenses:
|
301
283
|
- MIT
|
302
284
|
metadata:
|
303
|
-
changelog_uri:
|
304
|
-
documentation_uri:
|
305
|
-
bug_tracker_uri:
|
285
|
+
changelog_uri: https://github.com/floraison/flor/blob/master/CHANGELOG.md
|
286
|
+
documentation_uri: https://github.com/floraison/flor/tree/master/doc
|
287
|
+
bug_tracker_uri: https://github.com/floraison/flor/issues
|
306
288
|
mailing_list_uri: https://groups.google.com/forum/#!forum/floraison
|
307
|
-
homepage_uri:
|
308
|
-
source_code_uri:
|
289
|
+
homepage_uri: https://github.com/floraison/flor
|
290
|
+
source_code_uri: https://github.com/floraison/flor
|
309
291
|
post_install_message:
|
310
292
|
rdoc_options: []
|
311
293
|
require_paths:
|
@@ -321,8 +303,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
321
303
|
- !ruby/object:Gem::Version
|
322
304
|
version: '0'
|
323
305
|
requirements: []
|
324
|
-
|
325
|
-
rubygems_version: 2.4.5.5
|
306
|
+
rubygems_version: 3.0.3
|
326
307
|
signing_key:
|
327
308
|
specification_version: 4
|
328
309
|
summary: A Ruby workflow engine
|