statesman 1.3.1 → 2.0.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
@@ -13,7 +13,7 @@ class MyStateMachine
13
13
  end
14
14
 
15
15
  class MyActiveRecordModel < ActiveRecord::Base
16
- has_many :my_active_record_model_transitions
16
+ has_many :my_active_record_model_transitions, autosave: false
17
17
  alias_method :transitions, :my_active_record_model_transitions
18
18
 
19
19
  def state_machine
@@ -90,7 +90,7 @@ end
90
90
  # rubocop:enable MethodLength
91
91
 
92
92
  class OtherActiveRecordModel < ActiveRecord::Base
93
- has_many :other_active_record_model_transitions
93
+ has_many :other_active_record_model_transitions, autosave: false
94
94
  alias_method :transitions, :other_active_record_model_transitions
95
95
 
96
96
  def state_machine
@@ -164,8 +164,8 @@ class CreateOtherActiveRecordModelTransitionMigration < ActiveRecord::Migration
164
164
  end
165
165
  end
166
166
  end
167
-
168
167
  # rubocop:enable MethodLength
168
+
169
169
  class DropMostRecentColumn < ActiveRecord::Migration
170
170
  def change
171
171
  remove_index :my_active_record_model_transitions,
@@ -178,7 +178,8 @@ end
178
178
  module MyNamespace
179
179
  class MyActiveRecordModel < ActiveRecord::Base
180
180
  has_many :my_active_record_model_transitions,
181
- class_name: "MyNamespace::MyActiveRecordModelTransition"
181
+ class_name: "MyNamespace::MyActiveRecordModelTransition",
182
+ autosave: false
182
183
 
183
184
  def self.table_name_prefix
184
185
  "my_namespace_"
@@ -215,6 +216,7 @@ class CreateNamespacedARModelMigration < ActiveRecord::Migration
215
216
  end
216
217
  end
217
218
 
219
+ # rubocop:disable MethodLength
218
220
  class CreateNamespacedARModelTransitionMigration < ActiveRecord::Migration
219
221
  def change
220
222
  create_table :my_namespace_my_active_record_model_transitions do |t|
@@ -229,10 +231,32 @@ class CreateNamespacedARModelTransitionMigration < ActiveRecord::Migration
229
231
  t.text :metadata, default: '{}'
230
232
  end
231
233
 
234
+ if Statesman::Adapters::ActiveRecord.database_supports_partial_indexes?
235
+ t.boolean :most_recent, default: true, null: false
236
+ else
237
+ t.boolean :most_recent, default: true
238
+ end
239
+
232
240
  t.timestamps null: false
233
241
  end
234
242
 
235
243
  add_index :my_namespace_my_active_record_model_transitions, :sort_key,
236
244
  unique: true, name: 'my_namespaced_key'
245
+
246
+ if Statesman::Adapters::ActiveRecord.database_supports_partial_indexes?
247
+ add_index :my_namespace_my_active_record_model_transitions,
248
+ [:my_active_record_model_id, :most_recent],
249
+ unique: true,
250
+ where: "most_recent",
251
+ name: "index_namespace_model_transitions_"\
252
+ "parent_most_recent"
253
+ else
254
+ add_index :my_namespace_my_active_record_model_transitions,
255
+ [:my_active_record_model_id, :most_recent],
256
+ unique: true,
257
+ name: "index_namespace_model_transitions_"\
258
+ "parent_most_recent"
259
+ end
237
260
  end
261
+ # rubocop:enable MethodLength
238
262
  end
@@ -30,6 +30,6 @@ Gem::Specification.new do |spec|
30
30
  spec.add_development_dependency "mongoid", ">= 3.1"
31
31
  spec.add_development_dependency "rails", ">= 3.2"
32
32
  spec.add_development_dependency "pg", "~> 0.18"
33
- spec.add_development_dependency "mysql2", "~> 0.3"
33
+ spec.add_development_dependency "mysql2", "~> 0.4"
34
34
  spec.add_development_dependency "ammeter", "~> 1.1"
35
35
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: statesman
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 2.0.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Harry Marr
@@ -9,202 +9,202 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-07-02 00:00:00.000000000 Z
12
+ date: 2015-12-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
20
  version: '1.3'
21
21
  type: :development
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: '1.3'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: rake
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - '>='
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0'
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
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: rspec
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ~>
46
+ - - "~>"
47
47
  - !ruby/object:Gem::Version
48
48
  version: '3.1'
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
55
  version: '3.1'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rspec-rails
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ~>
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
62
  version: '3.1'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ~>
67
+ - - "~>"
68
68
  - !ruby/object:Gem::Version
69
69
  version: '3.1'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rspec-its
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ~>
74
+ - - "~>"
75
75
  - !ruby/object:Gem::Version
76
76
  version: '1.1'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ~>
81
+ - - "~>"
82
82
  - !ruby/object:Gem::Version
83
83
  version: '1.1'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: guard-rspec
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ~>
88
+ - - "~>"
89
89
  - !ruby/object:Gem::Version
90
90
  version: '4.3'
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ~>
95
+ - - "~>"
96
96
  - !ruby/object:Gem::Version
97
97
  version: '4.3'
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: rubocop
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - ~>
102
+ - - "~>"
103
103
  - !ruby/object:Gem::Version
104
104
  version: 0.30.0
105
105
  type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - ~>
109
+ - - "~>"
110
110
  - !ruby/object:Gem::Version
111
111
  version: 0.30.0
112
112
  - !ruby/object:Gem::Dependency
113
113
  name: guard-rubocop
114
114
  requirement: !ruby/object:Gem::Requirement
115
115
  requirements:
116
- - - ~>
116
+ - - "~>"
117
117
  - !ruby/object:Gem::Version
118
118
  version: '1.2'
119
119
  type: :development
120
120
  prerelease: false
121
121
  version_requirements: !ruby/object:Gem::Requirement
122
122
  requirements:
123
- - - ~>
123
+ - - "~>"
124
124
  - !ruby/object:Gem::Version
125
125
  version: '1.2'
126
126
  - !ruby/object:Gem::Dependency
127
127
  name: sqlite3
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
- - - ~>
130
+ - - "~>"
131
131
  - !ruby/object:Gem::Version
132
132
  version: '1.3'
133
133
  type: :development
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - ~>
137
+ - - "~>"
138
138
  - !ruby/object:Gem::Version
139
139
  version: '1.3'
140
140
  - !ruby/object:Gem::Dependency
141
141
  name: mongoid
142
142
  requirement: !ruby/object:Gem::Requirement
143
143
  requirements:
144
- - - '>='
144
+ - - ">="
145
145
  - !ruby/object:Gem::Version
146
146
  version: '3.1'
147
147
  type: :development
148
148
  prerelease: false
149
149
  version_requirements: !ruby/object:Gem::Requirement
150
150
  requirements:
151
- - - '>='
151
+ - - ">="
152
152
  - !ruby/object:Gem::Version
153
153
  version: '3.1'
154
154
  - !ruby/object:Gem::Dependency
155
155
  name: rails
156
156
  requirement: !ruby/object:Gem::Requirement
157
157
  requirements:
158
- - - '>='
158
+ - - ">="
159
159
  - !ruby/object:Gem::Version
160
160
  version: '3.2'
161
161
  type: :development
162
162
  prerelease: false
163
163
  version_requirements: !ruby/object:Gem::Requirement
164
164
  requirements:
165
- - - '>='
165
+ - - ">="
166
166
  - !ruby/object:Gem::Version
167
167
  version: '3.2'
168
168
  - !ruby/object:Gem::Dependency
169
169
  name: pg
170
170
  requirement: !ruby/object:Gem::Requirement
171
171
  requirements:
172
- - - ~>
172
+ - - "~>"
173
173
  - !ruby/object:Gem::Version
174
174
  version: '0.18'
175
175
  type: :development
176
176
  prerelease: false
177
177
  version_requirements: !ruby/object:Gem::Requirement
178
178
  requirements:
179
- - - ~>
179
+ - - "~>"
180
180
  - !ruby/object:Gem::Version
181
181
  version: '0.18'
182
182
  - !ruby/object:Gem::Dependency
183
183
  name: mysql2
184
184
  requirement: !ruby/object:Gem::Requirement
185
185
  requirements:
186
- - - ~>
186
+ - - "~>"
187
187
  - !ruby/object:Gem::Version
188
- version: '0.3'
188
+ version: '0.4'
189
189
  type: :development
190
190
  prerelease: false
191
191
  version_requirements: !ruby/object:Gem::Requirement
192
192
  requirements:
193
- - - ~>
193
+ - - "~>"
194
194
  - !ruby/object:Gem::Version
195
- version: '0.3'
195
+ version: '0.4'
196
196
  - !ruby/object:Gem::Dependency
197
197
  name: ammeter
198
198
  requirement: !ruby/object:Gem::Requirement
199
199
  requirements:
200
- - - ~>
200
+ - - "~>"
201
201
  - !ruby/object:Gem::Version
202
202
  version: '1.1'
203
203
  type: :development
204
204
  prerelease: false
205
205
  version_requirements: !ruby/object:Gem::Requirement
206
206
  requirements:
207
- - - ~>
207
+ - - "~>"
208
208
  - !ruby/object:Gem::Version
209
209
  version: '1.1'
210
210
  description: A statesmanlike state machine library
@@ -214,9 +214,9 @@ executables: []
214
214
  extensions: []
215
215
  extra_rdoc_files: []
216
216
  files:
217
- - .gitignore
218
- - .rubocop.yml
219
- - .travis.yml
217
+ - ".gitignore"
218
+ - ".rubocop.yml"
219
+ - ".travis.yml"
220
220
  - CHANGELOG.md
221
221
  - CONTRIBUTING.md
222
222
  - Gemfile
@@ -224,16 +224,11 @@ files:
224
224
  - LICENSE.txt
225
225
  - README.md
226
226
  - Rakefile
227
- - circle.yml
228
227
  - lib/generators/statesman/active_record_transition_generator.rb
229
- - lib/generators/statesman/add_constraints_to_most_recent_generator.rb
230
- - lib/generators/statesman/add_most_recent_generator.rb
231
228
  - lib/generators/statesman/generator_helpers.rb
232
229
  - lib/generators/statesman/migration_generator.rb
233
230
  - lib/generators/statesman/mongoid_transition_generator.rb
234
231
  - lib/generators/statesman/templates/active_record_transition_model.rb.erb
235
- - lib/generators/statesman/templates/add_constraints_to_most_recent_migration.rb.erb
236
- - lib/generators/statesman/templates/add_most_recent_migration.rb.erb
237
232
  - lib/generators/statesman/templates/create_migration.rb.erb
238
233
  - lib/generators/statesman/templates/mongoid_transition_model.rb.erb
239
234
  - lib/generators/statesman/templates/update_migration.rb.erb
@@ -247,7 +242,6 @@ files:
247
242
  - lib/statesman/adapters/mongoid_transition.rb
248
243
  - lib/statesman/callback.rb
249
244
  - lib/statesman/config.rb
250
- - lib/statesman/event_transitions.rb
251
245
  - lib/statesman/exceptions.rb
252
246
  - lib/statesman/guard.rb
253
247
  - lib/statesman/machine.rb
@@ -258,8 +252,6 @@ files:
258
252
  - spec/fixtures/add_constraints_to_most_recent_for_bacon_transitions_without_partial_index.rb
259
253
  - spec/fixtures/add_most_recent_to_bacon_transitions.rb
260
254
  - spec/generators/statesman/active_record_transition_generator_spec.rb
261
- - spec/generators/statesman/add_constraints_to_most_recent_generator_spec.rb
262
- - spec/generators/statesman/add_most_recent_generator_spec.rb
263
255
  - spec/generators/statesman/migration_generator_spec.rb
264
256
  - spec/generators/statesman/mongoid_transition_generator_spec.rb
265
257
  - spec/spec_helper.rb
@@ -288,17 +280,17 @@ require_paths:
288
280
  - lib
289
281
  required_ruby_version: !ruby/object:Gem::Requirement
290
282
  requirements:
291
- - - '>='
283
+ - - ">="
292
284
  - !ruby/object:Gem::Version
293
285
  version: '0'
294
286
  required_rubygems_version: !ruby/object:Gem::Requirement
295
287
  requirements:
296
- - - '>='
288
+ - - ">"
297
289
  - !ruby/object:Gem::Version
298
- version: '0'
290
+ version: 1.3.1
299
291
  requirements: []
300
292
  rubyforge_project:
301
- rubygems_version: 2.2.2
293
+ rubygems_version: 2.4.5
302
294
  signing_key:
303
295
  specification_version: 4
304
296
  summary: A statesmanlike state machine library
@@ -307,8 +299,6 @@ test_files:
307
299
  - spec/fixtures/add_constraints_to_most_recent_for_bacon_transitions_without_partial_index.rb
308
300
  - spec/fixtures/add_most_recent_to_bacon_transitions.rb
309
301
  - spec/generators/statesman/active_record_transition_generator_spec.rb
310
- - spec/generators/statesman/add_constraints_to_most_recent_generator_spec.rb
311
- - spec/generators/statesman/add_most_recent_generator_spec.rb
312
302
  - spec/generators/statesman/migration_generator_spec.rb
313
303
  - spec/generators/statesman/mongoid_transition_generator_spec.rb
314
304
  - spec/spec_helper.rb
data/circle.yml DELETED
@@ -1,9 +0,0 @@
1
- machine:
2
- ruby:
3
- version: 2.0.0-p353
4
- test:
5
- pre:
6
- - bundle exec rubocop
7
- database:
8
- override:
9
- - echo "no database step needed"
@@ -1,28 +0,0 @@
1
- require "rails/generators"
2
- require "generators/statesman/generator_helpers"
3
-
4
- module Statesman
5
- class AddConstraintsToMostRecentGenerator < Rails::Generators::Base
6
- include Statesman::GeneratorHelpers
7
-
8
- desc "Adds uniqueness and not-null constraints to the most recent column " \
9
- "for a statesman transition"
10
-
11
- argument :parent, type: :string, desc: "Your parent model name"
12
- argument :klass, type: :string, desc: "Your transition model name"
13
-
14
- source_root File.expand_path('../templates', __FILE__)
15
-
16
- def create_model_file
17
- template("add_constraints_to_most_recent_migration.rb.erb",
18
- migration_file_name)
19
- end
20
-
21
- private
22
-
23
- def migration_file_name
24
- "db/migrate/#{next_migration_number}_"\
25
- "add_constraints_to_most_recent_for_#{table_name}.rb"
26
- end
27
- end
28
- end
@@ -1,25 +0,0 @@
1
- require "rails/generators"
2
- require "generators/statesman/generator_helpers"
3
-
4
- module Statesman
5
- class AddMostRecentGenerator < Rails::Generators::Base
6
- include Statesman::GeneratorHelpers
7
-
8
- desc "Adds most_recent to a statesman transition model"
9
-
10
- argument :parent, type: :string, desc: "Your parent model name"
11
- argument :klass, type: :string, desc: "Your transition model name"
12
-
13
- source_root File.expand_path('../templates', __FILE__)
14
-
15
- def create_model_file
16
- template("add_most_recent_migration.rb.erb", migration_file_name)
17
- end
18
-
19
- private
20
-
21
- def migration_file_name
22
- "db/migrate/#{next_migration_number}_add_most_recent_to_#{table_name}.rb"
23
- end
24
- end
25
- end