enum_state_machine 0.4.0 → 0.4.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/.ruby-version +1 -1
- data/README.md +73 -2
- data/enum_state_machine.gemspec +1 -1
- data/lib/enum_state_machine/version.rb +1 -1
- metadata +13 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f0fff66d7a0561056a0a44726a3ae5d94d5d9d24
|
4
|
+
data.tar.gz: 1ea8c3370bd2d8c15379c4aa898d2f7e9088aed9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 43c264aa10cd9ad765f69f17509e9412199b48a5246c3887377335bb4dc207a340099639dee6b8d87a569fc3ae5604569644a7e82c6ca38879c29828480c8c16
|
7
|
+
data.tar.gz: 4793fdab192b45767e9174a184b28710fc83f9afb291df56dcf44d5bf4a5783a89e2663ce99534bffe96abd084719f7d57e354769eac4a9ce3a498a2f0f31d9f
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.2.4
|
data/README.md
CHANGED
@@ -1,4 +1,75 @@
|
|
1
|
-
##enum_state_machine
|
1
|
+
## enum_state_machine
|
2
2
|
==================
|
3
3
|
|
4
|
-
state_machine patches to use PowerEnum enums for state values.
|
4
|
+
`state_machine` patches to use PowerEnum enums for state values.
|
5
|
+
It allows you to use an enumerated attribute to track a state machine status.
|
6
|
+
|
7
|
+
## Installation:
|
8
|
+
|
9
|
+
Add the following to your Gemfile:
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
gem 'enum_state_machine'
|
13
|
+
```
|
14
|
+
|
15
|
+
## Usage:
|
16
|
+
|
17
|
+
Before using this you must familiarize yourself with the [PowerEnum](https://github.com/albertosaurus/power_enum_2)
|
18
|
+
and [state_machine](https://github.com/pluginaweek/state_machine) gems.
|
19
|
+
|
20
|
+
Include `EnumStateMachine::StateEnum` in our model. That adds a single method that is used to define an enumerated state attribute:
|
21
|
+
|
22
|
+
```ruby
|
23
|
+
# state_attr is the name of the state variable
|
24
|
+
# enum_attr is the name of the underlying enumerated attribute
|
25
|
+
# enum_opts are options to be passed to has_enumerated
|
26
|
+
has_state_enum(state_attr, enum_attr, enum_opts = {})
|
27
|
+
```
|
28
|
+
|
29
|
+
This is best illustrated with an example. Suppose you have a Grenade model that can have four possible states: stored, armed, kaboom, and fizzle.
|
30
|
+
|
31
|
+
```ruby
|
32
|
+
|
33
|
+
# Migration
|
34
|
+
|
35
|
+
create_enum :grenade_status
|
36
|
+
|
37
|
+
create_table :grenades do |t|
|
38
|
+
t.references :grenade_statuses
|
39
|
+
t.boolean :is_defective
|
40
|
+
|
41
|
+
t.timestamps
|
42
|
+
end
|
43
|
+
|
44
|
+
# Seeds
|
45
|
+
|
46
|
+
GrenadeStatus.update_enumerations_model do
|
47
|
+
[:unarmed, :armed, :kaboom, :fizzle].each { |name| GrenadeStatus.create! name: name }
|
48
|
+
end
|
49
|
+
|
50
|
+
# Models
|
51
|
+
|
52
|
+
class GrenadeStatus < ActiveRecord::Base
|
53
|
+
acts_as_enumerated
|
54
|
+
end
|
55
|
+
|
56
|
+
class Grenade < ActiveRecord::Base
|
57
|
+
include EnumStateMachine::StateEnum
|
58
|
+
has_state_enum :status, :grenade_status, default: :unarmed
|
59
|
+
|
60
|
+
state_machine :status, initial: :unarmed do
|
61
|
+
event :pulled_pin do
|
62
|
+
transition :unarmed => :armed
|
63
|
+
end
|
64
|
+
|
65
|
+
event :thrown do
|
66
|
+
# a defective grenade won't explode
|
67
|
+
transition :armed => :fizzle, :if => :is_defective?
|
68
|
+
# a normal armed one will explode
|
69
|
+
transition :armed => :kaboom
|
70
|
+
# If you forgot to pull the pin, nothing happens
|
71
|
+
transition :unarmed => :unarmed
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
```
|
data/enum_state_machine.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |s|
|
|
21
21
|
|
22
22
|
s.add_dependency "activerecord-deprecated_finders", "~> 1.0.3"
|
23
23
|
#s.add_dependency "rails-observers", "~> 0.1.2"
|
24
|
-
s.add_dependency "power_enum", "
|
24
|
+
s.add_dependency "power_enum", "> 2.8", "< 4.0"
|
25
25
|
|
26
26
|
s.add_development_dependency "rake"
|
27
27
|
s.add_development_dependency "minitest", "~> 5.1"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enum_state_machine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- The HornsAndHooves Team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -42,16 +42,22 @@ dependencies:
|
|
42
42
|
name: power_enum
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.8'
|
48
|
+
- - "<"
|
46
49
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
50
|
+
version: '4.0'
|
48
51
|
type: :runtime
|
49
52
|
prerelease: false
|
50
53
|
version_requirements: !ruby/object:Gem::Requirement
|
51
54
|
requirements:
|
52
|
-
- - "
|
55
|
+
- - ">"
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '2.8'
|
58
|
+
- - "<"
|
53
59
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
60
|
+
version: '4.0'
|
55
61
|
- !ruby/object:Gem::Dependency
|
56
62
|
name: rake
|
57
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -270,7 +276,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
270
276
|
version: '0'
|
271
277
|
requirements: []
|
272
278
|
rubyforge_project:
|
273
|
-
rubygems_version: 2.
|
279
|
+
rubygems_version: 2.6.8
|
274
280
|
signing_key:
|
275
281
|
specification_version: 4
|
276
282
|
summary: Enum State machines for attributes
|
@@ -309,4 +315,3 @@ test_files:
|
|
309
315
|
- test/unit/state_test.rb
|
310
316
|
- test/unit/transition_collection_test.rb
|
311
317
|
- test/unit/transition_test.rb
|
312
|
-
has_rdoc:
|