rails_machine 0.0.4 → 0.0.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 +4 -4
- data/lib/rails_machine/configuration.rb +6 -1
- data/lib/rails_machine/version.rb +1 -1
- data/lib/rails_machine.rb +23 -3
- metadata +13 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3647b44bf67e5cfffd7975958f2bf14279670074
|
4
|
+
data.tar.gz: 824ed3eb69d1cf170a461c03edde88526f362bee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1980d66914255a7db65693de9dd405039ec4e104e4d03c90e68dfd58e4cf99189acb01cca77d496083d7a23e6af09de3fa11370b91d8e4c143d1513fa26d7b28
|
7
|
+
data.tar.gz: 3a9b91124e2339dc506121b81bbbd74a386b94995f6947a57f74597a18b9bca2189c948c0ba75a0247db0eb6b63bb364aa7c110bce763fb99395062bd186f4c3
|
@@ -1,10 +1,11 @@
|
|
1
1
|
module RailsMachine
|
2
2
|
class Configuration
|
3
3
|
|
4
|
-
attr_reader :states, :transitions
|
4
|
+
attr_reader :states, :transitions, :init_states
|
5
5
|
|
6
6
|
def initialize
|
7
7
|
@states = []
|
8
|
+
@init_states = []
|
8
9
|
@transitions = Hash.new{|hash,key| hash[key] = [] }
|
9
10
|
end
|
10
11
|
|
@@ -13,6 +14,10 @@ module RailsMachine
|
|
13
14
|
self.instance_eval(&blk)
|
14
15
|
end
|
15
16
|
|
17
|
+
def init_state(state)
|
18
|
+
@init_states << state
|
19
|
+
end
|
20
|
+
|
16
21
|
def state(name, id: next_id)
|
17
22
|
@states << [name, id]
|
18
23
|
end
|
data/lib/rails_machine.rb
CHANGED
@@ -6,10 +6,30 @@ module RailsMachine
|
|
6
6
|
included do
|
7
7
|
cattr_accessor :transitions
|
8
8
|
|
9
|
-
validate :
|
9
|
+
validate :allowed_state, if: :state_changed?
|
10
|
+
private
|
11
|
+
cattr_accessor :init_states
|
10
12
|
end
|
11
13
|
|
12
|
-
def
|
14
|
+
def allowed_state
|
15
|
+
if self.new_record?
|
16
|
+
validate_init_state
|
17
|
+
else
|
18
|
+
validate_transition
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def validate_init_state
|
23
|
+
unless valid_init_state
|
24
|
+
errors.add(:state,:invalid_init_state)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def valid_init_state
|
29
|
+
init_states.empty? || init_states.include?(self.state.to_sym)
|
30
|
+
end
|
31
|
+
|
32
|
+
def validate_transition
|
13
33
|
from = self.state_was.to_sym
|
14
34
|
to = self.state.to_sym
|
15
35
|
|
@@ -27,7 +47,7 @@ module RailsMachine
|
|
27
47
|
configuration.run(&blk)
|
28
48
|
|
29
49
|
self.transitions = configuration.transitions
|
30
|
-
|
50
|
+
self.init_states = configuration.init_states
|
31
51
|
enum column => Hash[configuration.states]
|
32
52
|
end
|
33
53
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_machine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Grzegorz Łuszczek
|
@@ -9,50 +9,50 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-07-
|
12
|
+
date: 2014-07-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - "
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
20
|
version: '4.1'
|
21
21
|
type: :runtime
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - "
|
25
|
+
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
27
|
version: '4.1'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
29
|
name: sqlite3
|
30
30
|
requirement: !ruby/object:Gem::Requirement
|
31
31
|
requirements:
|
32
|
-
- - "
|
32
|
+
- - "~>"
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: '
|
34
|
+
version: '1.3'
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - "
|
39
|
+
- - "~>"
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version: '
|
41
|
+
version: '1.3'
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
43
|
name: rspec-rails
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
|
-
- - "
|
46
|
+
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: '0'
|
48
|
+
version: '3.0'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
|
-
- - "
|
53
|
+
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: '0'
|
55
|
+
version: '3.0'
|
56
56
|
description: Simple implementation of state machine for Rails using enums.
|
57
57
|
email:
|
58
58
|
- grzegorz@piklus.pl
|
@@ -93,3 +93,4 @@ signing_key:
|
|
93
93
|
specification_version: 4
|
94
94
|
summary: State machine for Rails.
|
95
95
|
test_files: []
|
96
|
+
has_rdoc:
|