stator 0.4.0 → 0.9.0.beta

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class User < ActiveRecord::Base
2
- extend Stator::Model
4
+ include Stator::Model
3
5
 
4
6
  before_save :set_tagged_at
5
7
 
@@ -15,7 +17,7 @@ class User < ActiveRecord::Base
15
17
  to :deactivated
16
18
 
17
19
  conditional do |condition|
18
- before_save :set_deactivated, :if => condition
20
+ before_save :set_deactivated, if: condition
19
21
  end
20
22
  end
21
23
 
@@ -24,7 +26,7 @@ class User < ActiveRecord::Base
24
26
  to :semiactivated
25
27
 
26
28
  conditional do |condition|
27
- validate :check_email_validity, :if => condition
29
+ validate :check_email_validity, if: condition
28
30
  end
29
31
  end
30
32
 
@@ -34,19 +36,18 @@ class User < ActiveRecord::Base
34
36
  end
35
37
 
36
38
  conditional :semiactivated, :activated do |condition|
37
- validate :check_email_presence, :if => condition
39
+ validate :check_email_presence, if: condition
38
40
  end
39
41
 
40
- state_alias :active, :constant => true, :scope => true do
42
+ state_alias :active, constant: true, scope: true do
41
43
  is :activated, :hyperactivated
42
- opposite :inactive, :constant => true, :scope => true
44
+ opposite :inactive, constant: true, scope: true
43
45
  end
44
46
 
45
- state_alias :luke_warm, :constant => :luke_warmers, :scope => :luke_warmers do
47
+ state_alias :luke_warm, constant: :luke_warmers, scope: :luke_warmers do
46
48
  is :semiactivated
47
49
  opposite :iced_tea
48
50
  end
49
-
50
51
  end
51
52
 
52
53
  validate :email_is_right_length
@@ -54,8 +55,8 @@ class User < ActiveRecord::Base
54
55
  protected
55
56
 
56
57
  def check_email_presence
57
- unless self.email.present?
58
- self.errors.add(:email, 'needs to be present')
58
+ if email.nil? || email.empty?
59
+ errors.add(:email, 'needs to be present')
59
60
  return false
60
61
  end
61
62
 
@@ -63,8 +64,8 @@ class User < ActiveRecord::Base
63
64
  end
64
65
 
65
66
  def check_email_validity
66
- unless self.email.to_s =~ /example\.com$/
67
- self.errors.add(:email, 'format needs to be example.com')
67
+ unless /example\.com$/.match?(email.to_s)
68
+ errors.add(:email, 'format needs to be example.com')
68
69
  return false
69
70
  end
70
71
 
@@ -72,8 +73,8 @@ class User < ActiveRecord::Base
72
73
  end
73
74
 
74
75
  def email_is_right_length
75
- unless self.email.to_s.length == 'four@example.com'.length
76
- self.errors.add(:email, 'needs to be the right length')
76
+ unless email.to_s.length == 'four@example.com'.length
77
+ errors.add(:email, 'needs to be the right length')
77
78
  return false
78
79
  end
79
80
 
@@ -86,32 +87,29 @@ class User < ActiveRecord::Base
86
87
  end
87
88
 
88
89
  def set_tagged_at
89
- self.tagged_at = self.semiactivated_state_at
90
+ self.tagged_at = semiactivated_state_at
90
91
  end
91
92
  end
92
93
 
93
94
  class Animal < ActiveRecord::Base
94
- extend Stator::Model
95
+ include Stator::Model
95
96
 
96
97
  # initial state = unborn
97
- stator :field => :status, :helpers => true, :track => true do
98
-
98
+ stator field: :status, track: true do
99
99
  transition :birth do
100
100
  from :unborn
101
101
  to :born
102
102
  end
103
103
 
104
104
  state :grown_up
105
-
106
105
  end
107
106
  end
108
107
 
109
108
  class Zoo < ActiveRecord::Base
110
- extend Stator::Model
109
+ include Stator::Model
111
110
 
112
111
  # initial state = closed
113
112
  stator do
114
-
115
113
  transition :open do
116
114
  from :closed
117
115
  to :opened
@@ -123,7 +121,7 @@ class Zoo < ActiveRecord::Base
123
121
  end
124
122
 
125
123
  conditional :opened do |c|
126
- validate :validate_lights_are_on, :if => c
124
+ validate :validate_lights_are_on, if: c
127
125
  end
128
126
  end
129
127
 
@@ -135,7 +133,7 @@ class Zoo < ActiveRecord::Base
135
133
  end
136
134
 
137
135
  class ZooKeeper < ActiveRecord::Base
138
- extend Stator::Model
136
+ include Stator::Model
139
137
 
140
138
  stator namespace: 'employment', field: 'employment_state', track: true do
141
139
  transition :hire do
@@ -163,20 +161,18 @@ class ZooKeeper < ActiveRecord::Base
163
161
  end
164
162
 
165
163
  class Farm < ActiveRecord::Base
166
- extend Stator::Model
164
+ include Stator::Model
167
165
 
168
166
  # initial state = dirty
169
167
  stator do
170
168
  transition :cleanup do
171
- from :dirty
172
- to :clean
169
+ from :dirty
170
+ to :clean
173
171
  end
174
172
  end
175
173
 
176
-
177
174
  # initial state = dirty
178
- stator :field => 'house_state', :namespace => 'house' do
179
-
175
+ stator namespace: 'house', field: 'house_state' do
180
176
  transition :cleanup do
181
177
  from :dirty
182
178
  to :clean
@@ -191,11 +187,10 @@ class Farm < ActiveRecord::Base
191
187
  is_not :dirty, :disgusting
192
188
  end
193
189
  end
194
-
195
190
  end
196
191
 
197
192
  class Factory < ActiveRecord::Base
198
- extend Stator::Model
193
+ include Stator::Model
199
194
 
200
195
  # initial state = nil
201
196
  stator do
@@ -209,5 +204,4 @@ class Factory < ActiveRecord::Base
209
204
  to :on_the_ground
210
205
  end
211
206
  end
212
-
213
207
  end
@@ -1,55 +1,55 @@
1
- ActiveRecord::Schema.define(:version => 20130628161227) do
1
+ # frozen_string_literal: true
2
2
 
3
- create_table "users", :force => true do |t|
4
- t.string "name"
5
- t.string "email"
6
- t.datetime "tagged_at"
7
- t.string "state", :default => 'pending'
8
- t.boolean "activated", :default => true
9
- t.datetime "created_at", :null => false
10
- t.datetime "updated_at", :null => false
11
- t.datetime "semiactivated_state_at"
12
- t.datetime "activated_state_at"
3
+ ActiveRecord::Schema.define(version: 20_130_628_161_227) do
4
+ create_table 'users', force: true do |t|
5
+ t.string 'name'
6
+ t.string 'email'
7
+ t.datetime 'tagged_at'
8
+ t.string 'state', default: 'pending'
9
+ t.boolean 'activated', default: true
10
+ t.datetime 'created_at', null: false
11
+ t.datetime 'updated_at', null: false
12
+ t.datetime 'semiactivated_state_at'
13
+ t.datetime 'activated_state_at'
13
14
  end
14
15
 
15
- create_table "animals", :force => true do |t|
16
- t.string "name"
17
- t.string "status", :default => 'unborn'
18
- t.datetime "created_at", :null => false
19
- t.datetime "updated_at", :null => false
20
- t.datetime "status_changed_at"
21
- t.datetime "unborn_status_at"
22
- t.datetime "born_status_at"
16
+ create_table 'animals', force: true do |t|
17
+ t.string 'name'
18
+ t.string 'status', default: 'unborn'
19
+ t.datetime 'created_at', null: false
20
+ t.datetime 'updated_at', null: false
21
+ t.datetime 'status_changed_at'
22
+ t.datetime 'unborn_status_at'
23
+ t.datetime 'born_status_at'
23
24
  end
24
25
 
25
- create_table "zoo_keepers", :force => true do |t|
26
- t.string "name"
27
- t.string "employment_state", :default => 'hired'
28
- t.datetime "hired_employment_state_at"
29
- t.datetime "fired_employment_state_at"
30
- t.string "working_state"
31
- t.datetime "started_working_state_at"
32
- t.datetime "ended_working_state_at"
26
+ create_table 'zoo_keepers', force: true do |t|
27
+ t.string 'name'
28
+ t.string 'employment_state', default: 'hired'
29
+ t.datetime 'hired_employment_state_at'
30
+ t.datetime 'fired_employment_state_at'
31
+ t.string 'working_state'
32
+ t.datetime 'started_working_state_at'
33
+ t.datetime 'ended_working_state_at'
33
34
  end
34
35
 
35
- create_table "zoos", :force => true do |t|
36
- t.string "name"
37
- t.string "state", :default => 'closed'
38
- t.datetime "created_at", :null => false
39
- t.datetime "updated_at", :null => false
36
+ create_table 'zoos', force: true do |t|
37
+ t.string 'name'
38
+ t.string 'state', default: 'closed'
39
+ t.datetime 'created_at', null: false
40
+ t.datetime 'updated_at', null: false
40
41
  end
41
42
 
42
- create_table "farms", :force => true do |t|
43
- t.string "name"
44
- t.string "state", :default => 'dirty'
45
- t.string "house_state", :default => 'dirty'
46
- t.datetime "created_at", :null => false
47
- t.datetime "updated_at", :null => false
43
+ create_table 'farms', force: true do |t|
44
+ t.string 'name'
45
+ t.string 'state', default: 'dirty'
46
+ t.string 'house_state', default: 'dirty'
47
+ t.datetime 'created_at', null: false
48
+ t.datetime 'updated_at', null: false
48
49
  end
49
50
 
50
- create_table "factories", :force => true do |t|
51
- t.string "name"
52
- t.string "state"
51
+ create_table 'factories', force: true do |t|
52
+ t.string 'name'
53
+ t.string 'state'
53
54
  end
54
-
55
55
  end
data/stator.gemspec CHANGED
@@ -18,4 +18,5 @@ Gem::Specification.new do |gem|
18
18
  gem.require_paths = ["lib"]
19
19
 
20
20
  gem.add_dependency 'activerecord'
21
+ gem.add_dependency 'activesupport'
21
22
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.9.0.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Nelson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-07 00:00:00.000000000 Z
11
+ date: 2022-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  description: The simplest of ActiveRecord state machines. Intended to be lightweight
28
42
  and minimalistic.
29
43
  email:
@@ -32,19 +46,28 @@ executables: []
32
46
  extensions: []
33
47
  extra_rdoc_files: []
34
48
  files:
49
+ - ".github/workflows/build.yml"
35
50
  - ".gitignore"
36
51
  - ".rspec"
37
52
  - ".ruby-gemset"
38
53
  - ".ruby-version"
39
- - ".travis.yml"
54
+ - Appraisals
40
55
  - Gemfile
41
56
  - LICENSE.txt
42
57
  - README.md
43
58
  - Rakefile
44
- - gemfiles/ar40.gemfile
45
- - gemfiles/ar41.gemfile
46
- - gemfiles/ar42.gemfile
47
- - gemfiles/ar52.gemfile
59
+ - gemfiles/activerecord_5.1.gemfile
60
+ - gemfiles/activerecord_5.1.gemfile.lock
61
+ - gemfiles/activerecord_5.2.gemfile
62
+ - gemfiles/activerecord_5.2.gemfile.lock
63
+ - gemfiles/activerecord_5.gemfile
64
+ - gemfiles/activerecord_5.gemfile.lock
65
+ - gemfiles/activerecord_6.0.gemfile
66
+ - gemfiles/activerecord_6.0.gemfile.lock
67
+ - gemfiles/activerecord_6.1.gemfile
68
+ - gemfiles/activerecord_6.1.gemfile.lock
69
+ - gemfiles/activerecord_7.0.gemfile
70
+ - gemfiles/activerecord_7.0.gemfile.lock
48
71
  - lib/stator.rb
49
72
  - lib/stator/alias.rb
50
73
  - lib/stator/integration.rb
@@ -71,11 +94,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
71
94
  version: '0'
72
95
  required_rubygems_version: !ruby/object:Gem::Requirement
73
96
  requirements:
74
- - - ">="
97
+ - - ">"
75
98
  - !ruby/object:Gem::Version
76
- version: '0'
99
+ version: 1.3.1
77
100
  requirements: []
78
- rubygems_version: 3.0.6
101
+ rubygems_version: 3.1.6
79
102
  signing_key:
80
103
  specification_version: 4
81
104
  summary: The simplest of ActiveRecord state machines
data/.travis.yml DELETED
@@ -1,41 +0,0 @@
1
- language: ruby
2
-
3
- rvm:
4
- - 2.0.0
5
- - 2.1.6
6
- - 2.2.3
7
- - 2.4.5
8
- - 2.5.3
9
-
10
- gemfile:
11
- - gemfiles/ar40.gemfile
12
- - gemfiles/ar41.gemfile
13
- - gemfiles/ar42.gemfile
14
- - gemfiles/ar52.gemfile
15
-
16
- matrix:
17
- allow_failures:
18
- - gemfile: gemfiles/ar42.gemfile
19
- - gemfile: gemfiles/ar52.gemfile
20
-
21
- exclude:
22
- - rvm: 2.0.0
23
- gemfile: gemfiles/ar52.gemfile
24
-
25
- - rvm: 2.1.6
26
- gemfile: gemfiles/ar52.gemfile
27
-
28
- - rvm: 2.2.3
29
- gemfile: gemfiles/ar52.gemfile
30
-
31
- - rvm: 2.4.5
32
- gemfile: gemfiles/ar40.gemfile
33
-
34
- - rvm: 2.4.5
35
- gemfile: gemfiles/ar41.gemfile
36
-
37
- - rvm: 2.5.3
38
- gemfile: gemfiles/ar40.gemfile
39
-
40
- - rvm: 2.5.3
41
- gemfile: gemfiles/ar41.gemfile
@@ -1,10 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in stator.gemspec
4
- gem 'activerecord', '~> 4.0.0'
5
-
6
- gemspec :path => '../'
7
-
8
- gem 'rake'
9
- gem 'activerecord-nulldb-adapter', :require => false, :github => 'nulldb/nulldb', :ref => 'ffc7dae4697c6b9fb15bed9edca3acb1f00eb5f0'
10
- gem 'rspec'
@@ -1,10 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in stator.gemspec
4
- gem 'activerecord', '~> 4.1.0'
5
-
6
- gemspec :path => '../'
7
-
8
- gem 'rake'
9
- gem 'activerecord-nulldb-adapter', :require => false, :github => 'nulldb/nulldb', :ref => 'ffc7dae4697c6b9fb15bed9edca3acb1f00eb5f0'
10
- gem 'rspec'
@@ -1,10 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in stator.gemspec
4
- gem 'activerecord', '~> 4.0.0'
5
-
6
- gemspec :path => '../'
7
-
8
- gem 'rake'
9
- gem 'activerecord-nulldb-adapter', :require => false, :github => 'nulldb/nulldb', :ref => 'ffc7dae4697c6b9fb15bed9edca3acb1f00eb5f0'
10
- gem 'rspec'
@@ -1,10 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in stator.gemspec
4
- gem 'activerecord', '~> 5.2.0'
5
-
6
- gemspec :path => '../'
7
-
8
- gem 'rake'
9
- gem 'activerecord-nulldb-adapter', '~> 0.4.0', :require => false, :git => 'git@github.com:nulldb/nulldb.git'
10
- gem 'rspec'