stateful.rb 2.2.0 → 2.3.1
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 +4 -4
- data/CHANGELOG.md +43 -1
- data/Gemfile +1 -0
- data/lib/Stateful/ActiveRecord/ClassMethods.rb +7 -65
- data/lib/Stateful/ClassMethods.rb +60 -0
- data/lib/Stateful/Poro/ClassMethods.rb +12 -70
- data/lib/Stateful/Sequel/ClassMethods.rb +7 -65
- data/lib/Stateful/VERSION.rb +1 -1
- data/test/ActiveRecord/WithColumnName.rb +1 -4
- data/test/ActiveRecord/WithExplicitDeterministicEventOrdering.rb +1 -4
- data/test/ActiveRecord/WithExplicitGlobalNonDeterministicEventOrdering.rb +1 -4
- data/test/ActiveRecord/WithExplicitGlobalNonDeterministicEventOrderingAndInitialStateBlock.rb +1 -4
- data/test/ActiveRecord/WithExplicitNonDeterministicEventOrdering.rb +1 -4
- data/test/ActiveRecord/WithInitialStateBlock.rb +1 -4
- data/test/ActiveRecord/WithMultipleFinalStates.rb +1 -4
- data/test/ActiveRecord/WithMultipleStateMachines.rb +1 -4
- data/test/ActiveRecord/WithMultipleStateMachinesAndStatefulBlock.rb +1 -4
- data/test/ActiveRecord/WithPersistenceNonSpecificExtend.rb +1 -4
- data/test/ActiveRecord/WithPersistenceNonSpecificExtendAndStatefulBlock.rb +1 -4
- data/test/ActiveRecord/WithPersistenceSpecificExtend.rb +1 -4
- data/test/ActiveRecord/WithPersistenceSpecificExtendAndStatefulBlock.rb +1 -4
- data/test/Poro/WithExplicitDeterministicEventOrdering.rb +1 -5
- data/test/Poro/WithExplicitGlobalNonDeterministicEventOrdering.rb +1 -5
- data/test/Poro/WithExplicitGlobalNonDeterministicEventOrderingAndInitialStateBlock.rb +1 -5
- data/test/Poro/WithExplicitNonDeterministicEventOrdering.rb +1 -5
- data/test/Poro/WithInitialStateBlock.rb +1 -5
- data/test/Poro/WithMultipleFinalStates.rb +1 -5
- data/test/Poro/WithMultipleStateMachines.rb +1 -5
- data/test/Poro/WithMultipleStateMachinesAndStatefulBlock.rb +1 -5
- data/test/Poro/WithPersistenceNonSpecificExtend.rb +1 -5
- data/test/Poro/WithPersistenceNonSpecificExtendAndStatefulBlock.rb +1 -5
- data/test/Poro/WithPersistenceSpecificExtend.rb +1 -5
- data/test/Poro/WithPersistenceSpecificExtendAndStatefulBlock.rb +1 -5
- data/test/Poro/WithVariableName.rb +1 -5
- data/test/Sequel/WithColumnName.rb +1 -4
- data/test/Sequel/WithExplicitDeterministicEventOrdering.rb +1 -4
- data/test/Sequel/WithExplicitGlobalNonDeterministicEventOrdering.rb +1 -4
- data/test/Sequel/WithExplicitGlobalNonDeterministicEventOrderingAndInitialStateBlock.rb +1 -4
- data/test/Sequel/WithExplicitNonDeterministicEventOrdering.rb +1 -4
- data/test/Sequel/WithInitialStateBlock.rb +1 -4
- data/test/Sequel/WithMultipleFinalStates.rb +1 -4
- data/test/Sequel/WithMultipleStateMachines.rb +1 -4
- data/test/Sequel/WithMultipleStateMachinesAndStatefulBlock.rb +1 -4
- data/test/Sequel/WithPersistenceNonSpecificExtend.rb +1 -4
- data/test/Sequel/WithPersistenceNonSpecificExtendAndStatefulBlock.rb +1 -4
- data/test/Sequel/WithPersistenceSpecificExtend.rb +1 -4
- data/test/Sequel/WithPersistenceSpecificExtendAndStatefulBlock.rb +1 -4
- data/test/Stateful.rb +0 -3
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 07c897617cdd223bd354d7f7819341cd8dfd388bf412b479fcac7b757e76d004
|
|
4
|
+
data.tar.gz: 6742bb2396d64fcac9ee8678b32b187d5b020fc2757842bc79f3f790f5a9a26f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1b396504ea4e1ad2f9f1e9c8419d8463749321e8e3ab64433c2cbbd7559377b2750a559099d25ab1e02c398cae2b20f3ec380cb27f83498b8808ddb0a7b4cbe0
|
|
7
|
+
data.tar.gz: eaf13d432db2b8df6f7785b009b2c837b434e051e01e318f3e82f497045b0c91af0cf02700f222c372a00478b093c4c98dd3c77f911550393ab8b8b1a89932c7
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,47 @@
|
|
|
1
1
|
# stateful/CHANGELOG.md
|
|
2
2
|
|
|
3
|
+
## 2.3.1 (20260418): Use require\_relative in tests.
|
|
4
|
+
-----------------------------------------------------------------------------------------------------------------------
|
|
5
|
+
|
|
6
|
+
### ~
|
|
7
|
+
1. test/ActiveRecord/\*.rb:
|
|
8
|
+
- /require 'Stateful'/require\_relative '../../lib/Stateful'/
|
|
9
|
+
- /require 'Stateful/ActiveRecord'/require\_relative '../../lib/Stateful/ActiveRecord'/
|
|
10
|
+
(Ensures tests always run against the adjacent lib, not an installed gem.)
|
|
11
|
+
2. test/Poro/\*.rb:
|
|
12
|
+
- /require 'Stateful'/require\_relative '../../lib/Stateful'/
|
|
13
|
+
- /require 'Stateful/Poro'/require\_relative '../../lib/Stateful/Poro'/
|
|
14
|
+
3. test/Sequel/\*.rb:
|
|
15
|
+
- /require 'Stateful'/require\_relative '../../lib/Stateful'/
|
|
16
|
+
- /require 'Stateful/Sequel'/require\_relative '../../lib/Stateful/Sequel'/
|
|
17
|
+
4. test/Stateful.rb: - $LOAD\_PATH manipulation (no longer needed with require\_relative).
|
|
18
|
+
5. lib/Stateful/VERSION.rb: /2.3.0/2.3.1/
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
## 2.3.0 (20260418): Extract shared class methods.
|
|
22
|
+
-----------------------------------------------------------------------------------------------------------------------
|
|
23
|
+
|
|
24
|
+
### ~
|
|
25
|
+
1. lib/Stateful/ClassMethods.rb: + shared adapter methods extracted from Poro::ClassMethods, ActiveRecord::ClassMethods, Sequel::ClassMethods. All adapters now delegate to stateful\_attribute\_name\_for\_machine.
|
|
26
|
+
- define\_named\_machine\_methods
|
|
27
|
+
- define\_event\_method
|
|
28
|
+
- define\_status\_predicate\_method
|
|
29
|
+
- define\_next\_state\_method
|
|
30
|
+
- define\_transitions\_method
|
|
31
|
+
- define\_initial\_stateQ\_method
|
|
32
|
+
- define\_final\_stateQ\_method
|
|
33
|
+
2. lib/Stateful/ActiveRecord/ClassMethods.rb:
|
|
34
|
+
- Extracted shared adapter methods to Stateful::ClassMethods.
|
|
35
|
+
- /column_name_for_machine/stateful\_attribute_name\_for\_machine/
|
|
36
|
+
3. lib/Stateful/Poro/ClassMethods.rb: Extracted shared adapter methods to Stateful::ClassMethods.
|
|
37
|
+
- Extracted shared adapter methods to Stateful::ClassMethods.
|
|
38
|
+
- /variable_name_for_machine/stateful\_attribute_name\_for\_machine/
|
|
39
|
+
4. lib/Stateful/Sequel/ClassMethods.rb: Extracted shared adapter methods to Stateful::ClassMethods.
|
|
40
|
+
- Extracted shared adapter methods to Stateful::ClassMethods.
|
|
41
|
+
- /column_name_for_machine/stateful\_attribute_name\_for\_machine/
|
|
42
|
+
5. lib/Stateful/VERSION.rb: /2.2.0/2.3.0/
|
|
43
|
+
|
|
44
|
+
|
|
3
45
|
## 2.2.0 (20260418): Add Sequel support.
|
|
4
46
|
-----------------------------------------------------------------------------------------------------------------------
|
|
5
47
|
|
|
@@ -24,7 +66,7 @@
|
|
|
24
66
|
|
|
25
67
|
### ~
|
|
26
68
|
1. lib/Stateful.rb: Auto-detect Sequel::Model in Stateful.extended, between ActiveRecord and Poro.
|
|
27
|
-
2. test/Stateful.rb: + Sequel specs
|
|
69
|
+
2. test/Stateful.rb: + Sequel specs; - $LOAD\_PATH.unshift(test\_dir) to avoid case-insensitive collision between test/Sequel.rb and require 'sequel'.
|
|
28
70
|
3. stateful.rb.gemspec: + sequel dev dependency; update description to include Sequel.
|
|
29
71
|
4. lib/Stateful/VERSION.rb: /2.1.0/2.2.0/
|
|
30
72
|
|
data/Gemfile
CHANGED
|
@@ -6,8 +6,8 @@ module Stateful
|
|
|
6
6
|
module ClassMethods
|
|
7
7
|
class << self
|
|
8
8
|
def extended(klass)
|
|
9
|
-
klass.
|
|
10
|
-
klass.
|
|
9
|
+
klass.define_stateful_attribute_setter_method
|
|
10
|
+
klass.define_stateful_attribute_getter_method
|
|
11
11
|
klass.define_next_state_method
|
|
12
12
|
klass.define_transitions_method
|
|
13
13
|
klass.define_initial_stateQ_method
|
|
@@ -15,15 +15,6 @@ module Stateful
|
|
|
15
15
|
end
|
|
16
16
|
end # class << self
|
|
17
17
|
|
|
18
|
-
def define_named_machine_methods(machine_name)
|
|
19
|
-
define_stateful_column_name_setter_method(machine_name: machine_name)
|
|
20
|
-
define_stateful_column_name_getter_method(machine_name: machine_name)
|
|
21
|
-
define_next_state_method(machine_name: machine_name)
|
|
22
|
-
define_transitions_method(machine_name: machine_name)
|
|
23
|
-
define_initial_stateQ_method(machine_name: machine_name)
|
|
24
|
-
define_final_stateQ_method(machine_name: machine_name)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
18
|
def stateful_column_name=(stateful_column_name)
|
|
28
19
|
@stateful_column_name = stateful_column_name
|
|
29
20
|
end
|
|
@@ -32,7 +23,7 @@ module Stateful
|
|
|
32
23
|
@stateful_column_name
|
|
33
24
|
end
|
|
34
25
|
|
|
35
|
-
def
|
|
26
|
+
def stateful_attribute_name_for_machine(machine_name = nil)
|
|
36
27
|
if machine_name
|
|
37
28
|
"#{machine_name}_state"
|
|
38
29
|
else
|
|
@@ -40,24 +31,8 @@ module Stateful
|
|
|
40
31
|
end
|
|
41
32
|
end
|
|
42
33
|
|
|
43
|
-
def
|
|
44
|
-
stateful_column_name =
|
|
45
|
-
define_method(transition.event_name) do
|
|
46
|
-
next_state_name = self.send(stateful_column_name).next_state_name(transition.event_name)
|
|
47
|
-
next_state = self.class.stateful_state_machine(machine_name).find(next_state_name)
|
|
48
|
-
self.send("#{stateful_column_name}=", next_state)
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def define_status_predicate_method(state_name, machine_name: nil)
|
|
53
|
-
stateful_column_name = column_name_for_machine(machine_name)
|
|
54
|
-
define_method("#{state_name}?") do
|
|
55
|
-
self.send(stateful_column_name).name == state_name
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def define_stateful_column_name_setter_method(machine_name: nil)
|
|
60
|
-
stateful_column_name = column_name_for_machine(machine_name)
|
|
34
|
+
def define_stateful_attribute_setter_method(machine_name: nil)
|
|
35
|
+
stateful_column_name = stateful_attribute_name_for_machine(machine_name)
|
|
61
36
|
define_method("#{stateful_column_name}=") do |state|
|
|
62
37
|
instance_variable_set("@#{stateful_column_name}", self.class.stateful_state_machine(machine_name).find(state))
|
|
63
38
|
write_attribute(stateful_column_name, instance_variable_get("@#{stateful_column_name}").name)
|
|
@@ -66,8 +41,8 @@ module Stateful
|
|
|
66
41
|
end
|
|
67
42
|
end
|
|
68
43
|
|
|
69
|
-
def
|
|
70
|
-
stateful_column_name =
|
|
44
|
+
def define_stateful_attribute_getter_method(machine_name: nil)
|
|
45
|
+
stateful_column_name = stateful_attribute_name_for_machine(machine_name)
|
|
71
46
|
define_method(stateful_column_name) do
|
|
72
47
|
instance_variable_set("@#{stateful_column_name}", self.class.stateful_state_machine(machine_name).find(read_attribute(stateful_column_name)))
|
|
73
48
|
if state = instance_variable_get("@#{stateful_column_name}")
|
|
@@ -79,39 +54,6 @@ module Stateful
|
|
|
79
54
|
end
|
|
80
55
|
end
|
|
81
56
|
end
|
|
82
|
-
|
|
83
|
-
def define_next_state_method(machine_name: nil)
|
|
84
|
-
stateful_column_name = column_name_for_machine(machine_name)
|
|
85
|
-
method_name = machine_name ? "#{machine_name}_next_state" : :next_state
|
|
86
|
-
define_method(method_name) do |event_name|
|
|
87
|
-
next_state_name = self.send(stateful_column_name).next_state_name(event_name)
|
|
88
|
-
self.class.stateful_state_machine(machine_name).find(next_state_name)
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
def define_transitions_method(machine_name: nil)
|
|
93
|
-
stateful_column_name = column_name_for_machine(machine_name)
|
|
94
|
-
method_name = machine_name ? "#{machine_name}_transitions" : :transitions
|
|
95
|
-
define_method(method_name) do
|
|
96
|
-
self.send(stateful_column_name).transitions
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def define_initial_stateQ_method(machine_name: nil)
|
|
101
|
-
stateful_column_name = column_name_for_machine(machine_name)
|
|
102
|
-
method_name = machine_name ? "#{machine_name}_initial_state?" : :initial_state?
|
|
103
|
-
define_method(method_name) do
|
|
104
|
-
self.send(stateful_column_name) == self.class.stateful_state_machine(machine_name).initial_state
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
def define_final_stateQ_method(machine_name: nil)
|
|
109
|
-
stateful_column_name = column_name_for_machine(machine_name)
|
|
110
|
-
method_name = machine_name ? "#{machine_name}_final_state?" : :final_state?
|
|
111
|
-
define_method(method_name) do
|
|
112
|
-
self.class.stateful_state_machine(machine_name).final_states.include?(self.send(stateful_column_name))
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
57
|
end
|
|
116
58
|
end
|
|
117
59
|
end
|
|
@@ -51,6 +51,66 @@ module Stateful
|
|
|
51
51
|
|
|
52
52
|
# end DSL
|
|
53
53
|
|
|
54
|
+
# adapter methods
|
|
55
|
+
|
|
56
|
+
def define_named_machine_methods(machine_name)
|
|
57
|
+
define_stateful_attribute_setter_method(machine_name: machine_name)
|
|
58
|
+
define_stateful_attribute_getter_method(machine_name: machine_name)
|
|
59
|
+
define_next_state_method(machine_name: machine_name)
|
|
60
|
+
define_transitions_method(machine_name: machine_name)
|
|
61
|
+
define_initial_stateQ_method(machine_name: machine_name)
|
|
62
|
+
define_final_stateQ_method(machine_name: machine_name)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def define_event_method(transition, machine_name: nil)
|
|
66
|
+
attribute_name = stateful_attribute_name_for_machine(machine_name)
|
|
67
|
+
define_method(transition.event_name) do
|
|
68
|
+
next_state_name = self.send(attribute_name).next_state_name(transition.event_name)
|
|
69
|
+
next_state = self.class.stateful_state_machine(machine_name).find(next_state_name)
|
|
70
|
+
self.send("#{attribute_name}=", next_state)
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def define_status_predicate_method(state_name, machine_name: nil)
|
|
75
|
+
attribute_name = stateful_attribute_name_for_machine(machine_name)
|
|
76
|
+
define_method("#{state_name}?") do
|
|
77
|
+
self.send(attribute_name).name == state_name
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def define_next_state_method(machine_name: nil)
|
|
82
|
+
attribute_name = stateful_attribute_name_for_machine(machine_name)
|
|
83
|
+
method_name = machine_name ? "#{machine_name}_next_state" : :next_state
|
|
84
|
+
define_method(method_name) do |event_name|
|
|
85
|
+
next_state_name = self.send(attribute_name).next_state_name(event_name)
|
|
86
|
+
self.class.stateful_state_machine(machine_name).find(next_state_name)
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def define_transitions_method(machine_name: nil)
|
|
91
|
+
attribute_name = stateful_attribute_name_for_machine(machine_name)
|
|
92
|
+
method_name = machine_name ? "#{machine_name}_transitions" : :transitions
|
|
93
|
+
define_method(method_name) do
|
|
94
|
+
self.send(attribute_name).transitions
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def define_initial_stateQ_method(machine_name: nil)
|
|
99
|
+
attribute_name = stateful_attribute_name_for_machine(machine_name)
|
|
100
|
+
method_name = machine_name ? "#{machine_name}_initial_state?" : :initial_state?
|
|
101
|
+
define_method(method_name) do
|
|
102
|
+
self.send(attribute_name) == self.class.stateful_state_machine(machine_name).initial_state
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
def define_final_stateQ_method(machine_name: nil)
|
|
107
|
+
attribute_name = stateful_attribute_name_for_machine(machine_name)
|
|
108
|
+
method_name = machine_name ? "#{machine_name}_final_state?" : :final_state?
|
|
109
|
+
define_method(method_name) do
|
|
110
|
+
self.class.stateful_state_machine(machine_name).final_states.include?(self.send(attribute_name))
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
54
114
|
# predicate methods
|
|
55
115
|
|
|
56
116
|
def final_state?
|
|
@@ -6,8 +6,8 @@ module Stateful
|
|
|
6
6
|
module ClassMethods
|
|
7
7
|
class << self
|
|
8
8
|
def extended(klass)
|
|
9
|
-
klass.
|
|
10
|
-
klass.
|
|
9
|
+
klass.define_stateful_attribute_setter_method
|
|
10
|
+
klass.define_stateful_attribute_getter_method
|
|
11
11
|
klass.define_next_state_method
|
|
12
12
|
klass.define_transitions_method
|
|
13
13
|
klass.define_initial_stateQ_method
|
|
@@ -15,15 +15,6 @@ module Stateful
|
|
|
15
15
|
end
|
|
16
16
|
end # class << self
|
|
17
17
|
|
|
18
|
-
def define_named_machine_methods(machine_name)
|
|
19
|
-
define_stateful_variable_name_setter_method(machine_name: machine_name)
|
|
20
|
-
define_stateful_variable_name_getter_method(machine_name: machine_name)
|
|
21
|
-
define_next_state_method(machine_name: machine_name)
|
|
22
|
-
define_transitions_method(machine_name: machine_name)
|
|
23
|
-
define_initial_stateQ_method(machine_name: machine_name)
|
|
24
|
-
define_final_stateQ_method(machine_name: machine_name)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
18
|
def stateful_variable_name=(stateful_variable_name)
|
|
28
19
|
@stateful_variable_name = stateful_variable_name
|
|
29
20
|
end
|
|
@@ -32,7 +23,7 @@ module Stateful
|
|
|
32
23
|
@stateful_variable_name
|
|
33
24
|
end
|
|
34
25
|
|
|
35
|
-
def
|
|
26
|
+
def stateful_attribute_name_for_machine(machine_name = nil)
|
|
36
27
|
if machine_name
|
|
37
28
|
"#{machine_name}_state"
|
|
38
29
|
else
|
|
@@ -40,74 +31,25 @@ module Stateful
|
|
|
40
31
|
end
|
|
41
32
|
end
|
|
42
33
|
|
|
43
|
-
def
|
|
44
|
-
|
|
45
|
-
define_method(
|
|
46
|
-
|
|
47
|
-
next_state = self.class.stateful_state_machine(machine_name).find(next_state_name)
|
|
48
|
-
self.send("#{variable_name}=", next_state)
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def define_status_predicate_method(state_name, machine_name: nil)
|
|
53
|
-
variable_name = variable_name_for_machine(machine_name)
|
|
54
|
-
define_method("#{state_name}?") do
|
|
55
|
-
self.send(variable_name).name == state_name
|
|
34
|
+
def define_stateful_attribute_setter_method(machine_name: nil)
|
|
35
|
+
attribute_name = stateful_attribute_name_for_machine(machine_name)
|
|
36
|
+
define_method("#{attribute_name}=") do |state|
|
|
37
|
+
instance_variable_set("@#{attribute_name}", self.class.stateful_state_machine(machine_name).find(state))
|
|
56
38
|
end
|
|
57
39
|
end
|
|
58
40
|
|
|
59
|
-
def
|
|
60
|
-
|
|
61
|
-
define_method(
|
|
62
|
-
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def define_stateful_variable_name_getter_method(machine_name: nil)
|
|
67
|
-
variable_name = variable_name_for_machine(machine_name)
|
|
68
|
-
define_method(variable_name) do
|
|
69
|
-
if state = instance_variable_get("@#{variable_name}")
|
|
41
|
+
def define_stateful_attribute_getter_method(machine_name: nil)
|
|
42
|
+
attribute_name = stateful_attribute_name_for_machine(machine_name)
|
|
43
|
+
define_method(attribute_name) do
|
|
44
|
+
if state = instance_variable_get("@#{attribute_name}")
|
|
70
45
|
state
|
|
71
46
|
else
|
|
72
47
|
initial_state = self.class.stateful_state_machine(machine_name).initial_state
|
|
73
|
-
self.send("#{
|
|
48
|
+
self.send("#{attribute_name}=", initial_state.name)
|
|
74
49
|
initial_state
|
|
75
50
|
end
|
|
76
51
|
end
|
|
77
52
|
end
|
|
78
|
-
|
|
79
|
-
def define_next_state_method(machine_name: nil)
|
|
80
|
-
variable_name = variable_name_for_machine(machine_name)
|
|
81
|
-
method_name = machine_name ? "#{machine_name}_next_state" : :next_state
|
|
82
|
-
define_method(method_name) do |event_name|
|
|
83
|
-
next_state_name = self.send(variable_name).next_state_name(event_name)
|
|
84
|
-
self.class.stateful_state_machine(machine_name).find(next_state_name)
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
def define_transitions_method(machine_name: nil)
|
|
89
|
-
variable_name = variable_name_for_machine(machine_name)
|
|
90
|
-
method_name = machine_name ? "#{machine_name}_transitions" : :transitions
|
|
91
|
-
define_method(method_name) do
|
|
92
|
-
self.send(variable_name).transitions
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
def define_initial_stateQ_method(machine_name: nil)
|
|
97
|
-
variable_name = variable_name_for_machine(machine_name)
|
|
98
|
-
method_name = machine_name ? "#{machine_name}_initial_state?" : :initial_state?
|
|
99
|
-
define_method(method_name) do
|
|
100
|
-
self.send(variable_name) == self.class.stateful_state_machine(machine_name).initial_state
|
|
101
|
-
end
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
def define_final_stateQ_method(machine_name: nil)
|
|
105
|
-
variable_name = variable_name_for_machine(machine_name)
|
|
106
|
-
method_name = machine_name ? "#{machine_name}_final_state?" : :final_state?
|
|
107
|
-
define_method(method_name) do
|
|
108
|
-
self.class.stateful_state_machine(machine_name).final_states.include?(self.send(variable_name))
|
|
109
|
-
end
|
|
110
|
-
end
|
|
111
53
|
end
|
|
112
54
|
end
|
|
113
55
|
end
|
|
@@ -6,8 +6,8 @@ module Stateful
|
|
|
6
6
|
module ClassMethods
|
|
7
7
|
class << self
|
|
8
8
|
def extended(klass)
|
|
9
|
-
klass.
|
|
10
|
-
klass.
|
|
9
|
+
klass.define_stateful_attribute_setter_method
|
|
10
|
+
klass.define_stateful_attribute_getter_method
|
|
11
11
|
klass.define_next_state_method
|
|
12
12
|
klass.define_transitions_method
|
|
13
13
|
klass.define_initial_stateQ_method
|
|
@@ -15,15 +15,6 @@ module Stateful
|
|
|
15
15
|
end
|
|
16
16
|
end # class << self
|
|
17
17
|
|
|
18
|
-
def define_named_machine_methods(machine_name)
|
|
19
|
-
define_stateful_column_name_setter_method(machine_name: machine_name)
|
|
20
|
-
define_stateful_column_name_getter_method(machine_name: machine_name)
|
|
21
|
-
define_next_state_method(machine_name: machine_name)
|
|
22
|
-
define_transitions_method(machine_name: machine_name)
|
|
23
|
-
define_initial_stateQ_method(machine_name: machine_name)
|
|
24
|
-
define_final_stateQ_method(machine_name: machine_name)
|
|
25
|
-
end
|
|
26
|
-
|
|
27
18
|
def stateful_column_name=(stateful_column_name)
|
|
28
19
|
@stateful_column_name = stateful_column_name
|
|
29
20
|
end
|
|
@@ -32,7 +23,7 @@ module Stateful
|
|
|
32
23
|
@stateful_column_name
|
|
33
24
|
end
|
|
34
25
|
|
|
35
|
-
def
|
|
26
|
+
def stateful_attribute_name_for_machine(machine_name = nil)
|
|
36
27
|
if machine_name
|
|
37
28
|
"#{machine_name}_state"
|
|
38
29
|
else
|
|
@@ -40,24 +31,8 @@ module Stateful
|
|
|
40
31
|
end
|
|
41
32
|
end
|
|
42
33
|
|
|
43
|
-
def
|
|
44
|
-
stateful_column_name =
|
|
45
|
-
define_method(transition.event_name) do
|
|
46
|
-
next_state_name = self.send(stateful_column_name).next_state_name(transition.event_name)
|
|
47
|
-
next_state = self.class.stateful_state_machine(machine_name).find(next_state_name)
|
|
48
|
-
self.send("#{stateful_column_name}=", next_state)
|
|
49
|
-
end
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def define_status_predicate_method(state_name, machine_name: nil)
|
|
53
|
-
stateful_column_name = column_name_for_machine(machine_name)
|
|
54
|
-
define_method("#{state_name}?") do
|
|
55
|
-
self.send(stateful_column_name).name == state_name
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def define_stateful_column_name_setter_method(machine_name: nil)
|
|
60
|
-
stateful_column_name = column_name_for_machine(machine_name)
|
|
34
|
+
def define_stateful_attribute_setter_method(machine_name: nil)
|
|
35
|
+
stateful_column_name = stateful_attribute_name_for_machine(machine_name)
|
|
61
36
|
define_method("#{stateful_column_name}=") do |state|
|
|
62
37
|
instance_variable_set("@#{stateful_column_name}", self.class.stateful_state_machine(machine_name).find(state))
|
|
63
38
|
self[stateful_column_name.to_sym] = instance_variable_get("@#{stateful_column_name}").name.to_s
|
|
@@ -66,8 +41,8 @@ module Stateful
|
|
|
66
41
|
end
|
|
67
42
|
end
|
|
68
43
|
|
|
69
|
-
def
|
|
70
|
-
stateful_column_name =
|
|
44
|
+
def define_stateful_attribute_getter_method(machine_name: nil)
|
|
45
|
+
stateful_column_name = stateful_attribute_name_for_machine(machine_name)
|
|
71
46
|
define_method(stateful_column_name) do
|
|
72
47
|
instance_variable_set("@#{stateful_column_name}", self.class.stateful_state_machine(machine_name).find(self[stateful_column_name.to_sym]))
|
|
73
48
|
if state = instance_variable_get("@#{stateful_column_name}")
|
|
@@ -79,39 +54,6 @@ module Stateful
|
|
|
79
54
|
end
|
|
80
55
|
end
|
|
81
56
|
end
|
|
82
|
-
|
|
83
|
-
def define_next_state_method(machine_name: nil)
|
|
84
|
-
stateful_column_name = column_name_for_machine(machine_name)
|
|
85
|
-
method_name = machine_name ? "#{machine_name}_next_state" : :next_state
|
|
86
|
-
define_method(method_name) do |event_name|
|
|
87
|
-
next_state_name = self.send(stateful_column_name).next_state_name(event_name)
|
|
88
|
-
self.class.stateful_state_machine(machine_name).find(next_state_name)
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
def define_transitions_method(machine_name: nil)
|
|
93
|
-
stateful_column_name = column_name_for_machine(machine_name)
|
|
94
|
-
method_name = machine_name ? "#{machine_name}_transitions" : :transitions
|
|
95
|
-
define_method(method_name) do
|
|
96
|
-
self.send(stateful_column_name).transitions
|
|
97
|
-
end
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
def define_initial_stateQ_method(machine_name: nil)
|
|
101
|
-
stateful_column_name = column_name_for_machine(machine_name)
|
|
102
|
-
method_name = machine_name ? "#{machine_name}_initial_state?" : :initial_state?
|
|
103
|
-
define_method(method_name) do
|
|
104
|
-
self.send(stateful_column_name) == self.class.stateful_state_machine(machine_name).initial_state
|
|
105
|
-
end
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
def define_final_stateQ_method(machine_name: nil)
|
|
109
|
-
stateful_column_name = column_name_for_machine(machine_name)
|
|
110
|
-
method_name = machine_name ? "#{machine_name}_final_state?" : :final_state?
|
|
111
|
-
define_method(method_name) do
|
|
112
|
-
self.class.stateful_state_machine(machine_name).final_states.include?(self.send(stateful_column_name))
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
57
|
end
|
|
116
58
|
end
|
|
117
59
|
end
|
data/lib/Stateful/VERSION.rb
CHANGED
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
class CreateTableMachines < ActiveRecord::Migration[6.0]
|
|
17
14
|
def change
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
class CreateTableMachines < ActiveRecord::Migration[6.0]
|
|
17
14
|
def change
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
class CreateTableMachines < ActiveRecord::Migration[6.0]
|
|
17
14
|
def change
|
data/test/ActiveRecord/WithExplicitGlobalNonDeterministicEventOrderingAndInitialStateBlock.rb
CHANGED
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
class CreateTableMachines < ActiveRecord::Migration[6.0]
|
|
17
14
|
def change
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
class CreateTableMachines < ActiveRecord::Migration[6.0]
|
|
17
14
|
def change
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
class CreateTableMachines < ActiveRecord::Migration[6.0]
|
|
17
14
|
def change
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
class CreateTableMachines < ActiveRecord::Migration[6.0]
|
|
17
14
|
def change
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
class CreateTableMachines < ActiveRecord::Migration[6.0]
|
|
17
14
|
def change
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
class CreateTableMachines < ActiveRecord::Migration[6.0]
|
|
17
14
|
def change
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
class CreateTableMachines < ActiveRecord::Migration[6.0]
|
|
17
14
|
def change
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
class CreateTableMachines < ActiveRecord::Migration[6.0]
|
|
17
14
|
def change
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful/ActiveRecord'
|
|
11
|
+
require_relative '../../lib/Stateful/ActiveRecord'
|
|
15
12
|
|
|
16
13
|
class CreateTableMachines < ActiveRecord::Migration[6.0]
|
|
17
14
|
def change
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful/ActiveRecord'
|
|
11
|
+
require_relative '../../lib/Stateful/ActiveRecord'
|
|
15
12
|
|
|
16
13
|
class CreateTableMachines < ActiveRecord::Migration[6.0]
|
|
17
14
|
def change
|
|
@@ -5,11 +5,7 @@ gem 'minitest-spec-context'
|
|
|
5
5
|
|
|
6
6
|
require 'minitest/autorun'
|
|
7
7
|
require 'minitest-spec-context'
|
|
8
|
-
|
|
9
|
-
lib_dir = File.expand_path(File.join(__FILE__, '..', '..', '..', 'lib'))
|
|
10
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
11
|
-
|
|
12
|
-
require 'Stateful'
|
|
8
|
+
require_relative '../../lib/Stateful'
|
|
13
9
|
|
|
14
10
|
class PoroMachine5
|
|
15
11
|
extend Stateful
|
|
@@ -5,11 +5,7 @@ gem 'minitest-spec-context'
|
|
|
5
5
|
|
|
6
6
|
require 'minitest/autorun'
|
|
7
7
|
require 'minitest-spec-context'
|
|
8
|
-
|
|
9
|
-
lib_dir = File.expand_path(File.join(__FILE__, '..', '..', '..', 'lib'))
|
|
10
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
11
|
-
|
|
12
|
-
require 'Stateful'
|
|
8
|
+
require_relative '../../lib/Stateful'
|
|
13
9
|
|
|
14
10
|
class PoroMachine9
|
|
15
11
|
extend Stateful
|
|
@@ -5,11 +5,7 @@ gem 'minitest-spec-context'
|
|
|
5
5
|
|
|
6
6
|
require 'minitest/autorun'
|
|
7
7
|
require 'minitest-spec-context'
|
|
8
|
-
|
|
9
|
-
lib_dir = File.expand_path(File.join(__FILE__, '..', '..', '..', 'lib'))
|
|
10
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
11
|
-
|
|
12
|
-
require 'Stateful'
|
|
8
|
+
require_relative '../../lib/Stateful'
|
|
13
9
|
|
|
14
10
|
class PoroMachine10
|
|
15
11
|
extend Stateful
|
|
@@ -5,11 +5,7 @@ gem 'minitest-spec-context'
|
|
|
5
5
|
|
|
6
6
|
require 'minitest/autorun'
|
|
7
7
|
require 'minitest-spec-context'
|
|
8
|
-
|
|
9
|
-
lib_dir = File.expand_path(File.join(__FILE__, '..', '..', '..', 'lib'))
|
|
10
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
11
|
-
|
|
12
|
-
require 'Stateful'
|
|
8
|
+
require_relative '../../lib/Stateful'
|
|
13
9
|
|
|
14
10
|
class PoroMachine6
|
|
15
11
|
extend Stateful
|
|
@@ -5,11 +5,7 @@ gem 'minitest-spec-context'
|
|
|
5
5
|
|
|
6
6
|
require 'minitest/autorun'
|
|
7
7
|
require 'minitest-spec-context'
|
|
8
|
-
|
|
9
|
-
lib_dir = File.expand_path(File.join(__FILE__, '..', '..', '..', 'lib'))
|
|
10
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
11
|
-
|
|
12
|
-
require 'Stateful'
|
|
8
|
+
require_relative '../../lib/Stateful'
|
|
13
9
|
|
|
14
10
|
class PoroMachine4
|
|
15
11
|
extend Stateful
|
|
@@ -5,11 +5,7 @@ gem 'minitest-spec-context'
|
|
|
5
5
|
|
|
6
6
|
require 'minitest/autorun'
|
|
7
7
|
require 'minitest-spec-context'
|
|
8
|
-
|
|
9
|
-
lib_dir = File.expand_path(File.join(__FILE__, '..', '..', '..', 'lib'))
|
|
10
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
11
|
-
|
|
12
|
-
require 'Stateful'
|
|
8
|
+
require_relative '../../lib/Stateful'
|
|
13
9
|
|
|
14
10
|
class PoroMachine7
|
|
15
11
|
extend Stateful
|
|
@@ -5,11 +5,7 @@ gem 'minitest-spec-context'
|
|
|
5
5
|
|
|
6
6
|
require 'minitest/autorun'
|
|
7
7
|
require 'minitest-spec-context'
|
|
8
|
-
|
|
9
|
-
lib_dir = File.expand_path(File.join(__FILE__, '..', '..', '..', 'lib'))
|
|
10
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
11
|
-
|
|
12
|
-
require 'Stateful'
|
|
8
|
+
require_relative '../../lib/Stateful'
|
|
13
9
|
|
|
14
10
|
class PoroMachine11
|
|
15
11
|
extend Stateful
|
|
@@ -5,11 +5,7 @@ gem 'minitest-spec-context'
|
|
|
5
5
|
|
|
6
6
|
require 'minitest/autorun'
|
|
7
7
|
require 'minitest-spec-context'
|
|
8
|
-
|
|
9
|
-
lib_dir = File.expand_path(File.join(__FILE__, '..', '..', '..', 'lib'))
|
|
10
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
11
|
-
|
|
12
|
-
require 'Stateful'
|
|
8
|
+
require_relative '../../lib/Stateful'
|
|
13
9
|
|
|
14
10
|
class PoroMachine12
|
|
15
11
|
extend Stateful
|
|
@@ -5,11 +5,7 @@ gem 'minitest-spec-context'
|
|
|
5
5
|
|
|
6
6
|
require 'minitest/autorun'
|
|
7
7
|
require 'minitest-spec-context'
|
|
8
|
-
|
|
9
|
-
lib_dir = File.expand_path(File.join(__FILE__, '..', '..', '..', 'lib'))
|
|
10
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
11
|
-
|
|
12
|
-
require 'Stateful'
|
|
8
|
+
require_relative '../../lib/Stateful'
|
|
13
9
|
|
|
14
10
|
class PoroMachine0
|
|
15
11
|
extend Stateful
|
|
@@ -5,11 +5,7 @@ gem 'minitest-spec-context'
|
|
|
5
5
|
|
|
6
6
|
require 'minitest/autorun'
|
|
7
7
|
require 'minitest-spec-context'
|
|
8
|
-
|
|
9
|
-
lib_dir = File.expand_path(File.join(__FILE__, '..', '..', '..', 'lib'))
|
|
10
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
11
|
-
|
|
12
|
-
require 'Stateful'
|
|
8
|
+
require_relative '../../lib/Stateful'
|
|
13
9
|
|
|
14
10
|
class PoroMachine1
|
|
15
11
|
extend Stateful
|
|
@@ -5,11 +5,7 @@ gem 'minitest-spec-context'
|
|
|
5
5
|
|
|
6
6
|
require 'minitest/autorun'
|
|
7
7
|
require 'minitest-spec-context'
|
|
8
|
-
|
|
9
|
-
lib_dir = File.expand_path(File.join(__FILE__, '..', '..', '..', 'lib'))
|
|
10
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
11
|
-
|
|
12
|
-
require 'Stateful/Poro'
|
|
8
|
+
require_relative '../../lib/Stateful/Poro'
|
|
13
9
|
|
|
14
10
|
class PoroMachine2
|
|
15
11
|
extend Stateful::Poro
|
|
@@ -5,11 +5,7 @@ gem 'minitest-spec-context'
|
|
|
5
5
|
|
|
6
6
|
require 'minitest/autorun'
|
|
7
7
|
require 'minitest-spec-context'
|
|
8
|
-
|
|
9
|
-
lib_dir = File.expand_path(File.join(__FILE__, '..', '..', '..', 'lib'))
|
|
10
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
11
|
-
|
|
12
|
-
require 'Stateful/Poro'
|
|
8
|
+
require_relative '../../lib/Stateful/Poro'
|
|
13
9
|
|
|
14
10
|
class PoroMachine3
|
|
15
11
|
extend Stateful::Poro
|
|
@@ -5,11 +5,7 @@ gem 'minitest-spec-context'
|
|
|
5
5
|
|
|
6
6
|
require 'minitest/autorun'
|
|
7
7
|
require 'minitest-spec-context'
|
|
8
|
-
|
|
9
|
-
lib_dir = File.expand_path(File.join(__FILE__, '..', '..', '..', 'lib'))
|
|
10
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
11
|
-
|
|
12
|
-
require 'Stateful'
|
|
8
|
+
require_relative '../../lib/Stateful'
|
|
13
9
|
|
|
14
10
|
class PoroMachine8
|
|
15
11
|
@stateful_variable_name = 'status'
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
DB.create_table :sequel_machine8s do
|
|
17
14
|
primary_key :id
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
DB.create_table :sequel_machine5s do
|
|
17
14
|
primary_key :id
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
DB.create_table :sequel_machine9s do
|
|
17
14
|
primary_key :id
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
DB.create_table :sequel_machine10s do
|
|
17
14
|
primary_key :id
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
DB.create_table :sequel_machine6s do
|
|
17
14
|
primary_key :id
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
DB.create_table :sequel_machine4s do
|
|
17
14
|
primary_key :id
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
DB.create_table :sequel_machine7s do
|
|
17
14
|
primary_key :id
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
DB.create_table :sequel_machine11s do
|
|
17
14
|
primary_key :id
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
DB.create_table :sequel_machine12s do
|
|
17
14
|
primary_key :id
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
DB.create_table :sequel_machine0s do
|
|
17
14
|
primary_key :id
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful'
|
|
11
|
+
require_relative '../../lib/Stateful'
|
|
15
12
|
|
|
16
13
|
DB.create_table :sequel_machine1s do
|
|
17
14
|
primary_key :id
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful/Sequel'
|
|
11
|
+
require_relative '../../lib/Stateful/Sequel'
|
|
15
12
|
|
|
16
13
|
DB.create_table :sequel_machine2s do
|
|
17
14
|
primary_key :id
|
|
@@ -8,10 +8,7 @@ require 'minitest-spec-context'
|
|
|
8
8
|
|
|
9
9
|
require_relative './test_helper'
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
13
|
-
|
|
14
|
-
require 'Stateful/Sequel'
|
|
11
|
+
require_relative '../../lib/Stateful/Sequel'
|
|
15
12
|
|
|
16
13
|
DB.create_table :sequel_machine3s do
|
|
17
14
|
primary_key :id
|
data/test/Stateful.rb
CHANGED
|
@@ -2,9 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
test_dir = File.dirname(File.expand_path(__FILE__))
|
|
4
4
|
|
|
5
|
-
lib_dir = File.expand_path(File.join(test_dir, '..', 'lib'))
|
|
6
|
-
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
|
7
|
-
|
|
8
5
|
active_record_specs = Dir[File.join(test_dir, 'ActiveRecord', '**', '*.rb')]
|
|
9
6
|
active_record_specs.each{|spec| require spec}
|
|
10
7
|
|