flor 0.17.0 → 0.18.0

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.
@@ -78,10 +78,19 @@ module Flor
78
78
  opts = [ to, from, opts ].find { |e| e.is_a?(Hash) } || {}
79
79
  opts[:target] ||= to if to.is_a?(Integer)
80
80
  opts[:current] ||= from if from.is_a?(Integer)
81
- #
82
- # defaults for the migration version table:
83
- # { table: :schema_info,
84
- # column: :version }
81
+
82
+ opts[:table] = (
83
+ @unit.conf['db_migration_table'] ||
84
+ @unit.conf['sto_migration_table'] ||
85
+ :schema_info).to_sym
86
+ opts[:column] = (
87
+ @unit.conf['db_migration_column'] ||
88
+ @unit.conf['sto_migration_column'] ||
89
+ :version).to_sym
90
+ #
91
+ # defaults for the migration version table:
92
+ # { table: :schema_info,
93
+ # column: :version }
85
94
 
86
95
  skip =
87
96
  @unit.conf['db_sparse_migrations'] ||
@@ -106,9 +115,15 @@ module Flor
106
115
  end
107
116
  end
108
117
 
118
+ # Delete tables in the storage database that begin with "flor_"
119
+ # and have more than 2 columns (the Sequel schema_info table has 1 column
120
+ # as of this writing)
121
+ #
109
122
  def delete_tables
110
123
 
111
- @db.tables.each { |t| @db[t].delete if t.to_s.match(/^flor_/) }
124
+ @db.tables.each { |t|
125
+ @db[t].delete \
126
+ if t.to_s.match(/^flor_/) && @db[t].columns.size > 2 }
112
127
  end
113
128
 
114
129
  def load_execution(exid)
@@ -55,7 +55,11 @@ module Flor
55
55
 
56
56
  def reply(message=@message, force=false)
57
57
 
58
- @ganger.return(message) if force || @ganger
58
+ fail ArgumentError.new(
59
+ "argument to reply must be a Hash but is #{message.class}"
60
+ ) unless message.is_a?(Hash)
61
+
62
+ @ganger.return(derive_message(message)) if force || @ganger
59
63
 
60
64
  [] # very important, return no further messages
61
65
  end
@@ -65,6 +69,47 @@ module Flor
65
69
  reply(
66
70
  Flor.to_error_message(@message, error))
67
71
  end
72
+
73
+ # So that #reply may be called with
74
+ # ```
75
+ # reply
76
+ # reply(@message)
77
+ # reply(payload: {})
78
+ # reply(ret: 123)
79
+ # reply(ret: 123, set: { a: 1 }, unset: [ :b ])
80
+ # ```
81
+ #
82
+ def derive_message(m)
83
+
84
+ exid = m['exid']
85
+ nid = m['nid']
86
+ pl = m['payload']
87
+
88
+ return m if Flor.is_exid?(exid) && Flor.is_nid?(nid) && pl.is_a?(Hash)
89
+
90
+ m = Flor.to_string_keyed_hash(m)
91
+ h = Flor.dup(@message)
92
+ ks = m.keys
93
+
94
+ if ks == [ 'payload' ]
95
+
96
+ h['payload'] = m['payload']
97
+
98
+ elsif (ks & %w[ ret set unset ]).size > 0
99
+
100
+ pl = (h['payload'] ||= {})
101
+
102
+ pl['ret'] = m['ret'] if m.has_key?('ret')
103
+ (m['set'] || {}).each { |k, v| pl[k] = v }
104
+ (m['unset'] || []).each { |k| pl.delete(k.to_s) }
105
+
106
+ else
107
+
108
+ h['payload'] = m
109
+ end
110
+
111
+ h
112
+ end
68
113
  end
69
114
  end
70
115
 
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: 0.17.0
4
+ version: 0.18.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Mettraux
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-04-08 00:00:00.000000000 Z
11
+ date: 2019-05-05 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.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.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.7'
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.7'
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: '0'
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: '0'
110
+ version: '1.8'
135
111
  description: A Ruby workflow engine (ruote next generation)
136
112
  email:
137
113
  - jmettraux+flor@gmail.com
@@ -322,7 +298,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
322
298
  version: '0'
323
299
  requirements: []
324
300
  rubyforge_project:
325
- rubygems_version: 2.4.5.5
301
+ rubygems_version: 2.6.14.1
326
302
  signing_key:
327
303
  specification_version: 4
328
304
  summary: A Ruby workflow engine