statesman 10.2.3 → 12.1.0

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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/tests.yml +17 -11
  3. data/.gitignore +0 -3
  4. data/.rspec +1 -0
  5. data/.rubocop.yml +1 -1
  6. data/.ruby-version +1 -1
  7. data/CHANGELOG.md +183 -43
  8. data/CONTRIBUTING.md +14 -13
  9. data/Gemfile +2 -2
  10. data/README.md +120 -62
  11. data/docs/COMPATIBILITY.md +2 -2
  12. data/lib/generators/statesman/generator_helpers.rb +1 -1
  13. data/lib/statesman/adapters/active_record.rb +26 -33
  14. data/lib/statesman/adapters/active_record_queries.rb +2 -2
  15. data/lib/statesman/adapters/active_record_transition.rb +5 -1
  16. data/lib/statesman/callback.rb +2 -2
  17. data/lib/statesman/config.rb +3 -10
  18. data/lib/statesman/machine.rb +8 -0
  19. data/lib/statesman/version.rb +1 -1
  20. data/lib/statesman.rb +3 -5
  21. data/lib/tasks/statesman.rake +2 -2
  22. data/spec/generators/statesman/active_record_transition_generator_spec.rb +7 -1
  23. data/spec/generators/statesman/migration_generator_spec.rb +5 -1
  24. data/spec/spec_helper.rb +34 -8
  25. data/spec/statesman/adapters/active_record_queries_spec.rb +1 -3
  26. data/spec/statesman/adapters/active_record_spec.rb +58 -39
  27. data/spec/statesman/adapters/active_record_transition_spec.rb +5 -2
  28. data/spec/statesman/adapters/memory_spec.rb +0 -1
  29. data/spec/statesman/adapters/memory_transition_spec.rb +0 -1
  30. data/spec/statesman/adapters/shared_examples.rb +0 -2
  31. data/spec/statesman/adapters/type_safe_active_record_queries_spec.rb +1 -3
  32. data/spec/statesman/callback_spec.rb +0 -2
  33. data/spec/statesman/config_spec.rb +0 -2
  34. data/spec/statesman/exceptions_spec.rb +1 -3
  35. data/spec/statesman/guard_spec.rb +0 -2
  36. data/spec/statesman/machine_spec.rb +71 -2
  37. data/spec/statesman/utils_spec.rb +0 -2
  38. data/spec/support/active_record.rb +55 -13
  39. data/spec/support/exactly_query_databases.rb +35 -0
  40. data/statesman.gemspec +5 -5
  41. metadata +14 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0cc749949e382ced6f27722a0eb033efc0383ba11a06265a84e1da3b593eb02d
4
- data.tar.gz: f2dd851b5c9ccb0aacbde8076c10fcf23bfe8a00926e58acfb9dd714c5d61b99
3
+ metadata.gz: d49f534086023febd344f7eb73b162903a28e3fd77ee430856d42242aafda37c
4
+ data.tar.gz: aba9670be235de98143f0a2ae0d15b9b7b32c8a9699901049e5cd9d931e29981
5
5
  SHA512:
6
- metadata.gz: 4ac72394722dc0d193874967e79bb30df1a1c7ba63e4eccd20294f2298b2e78637b3c7ffff7fe4ef4f4ad5d3ca522efe89444400fa09231684622848754a7683
7
- data.tar.gz: e995d62de4ec4471ec1a66fea6e290bfbc5f0a3420c3bd915117a0e92f08ca20994b59e84ed5f73a93d091156ea47ef35548ea61f50ad52a1942a69438d4f446
6
+ metadata.gz: d68959bd95e90bd0a986de5dd7197d21ac5535a5500d5d528b599fd07d26611125ce7e926f33efb5140f2ecbffa1c78dbb66e6d5f2209eeabe95ee49a4a862f8
7
+ data.tar.gz: 449e98a18f512eaff9a1ea500f9415b016bc8e775f7e1b1a7b9ffc393038112b3689ff4e7d364cbff9be6d23e3c4768d373dda3df7339249b53aa7a9d2e33136
@@ -24,15 +24,18 @@ jobs:
24
24
  strategy:
25
25
  fail-fast: false
26
26
  matrix:
27
- ruby-version: ["2.7", "3.0", "3.1", "3.2"]
27
+ ruby-version: ["3.0", "3.1", "3.2", "3.3"]
28
28
  rails-version:
29
- - "6.1.5"
30
- - "7.0.4"
29
+ - "6.1.7.6"
30
+ - "7.0.8"
31
+ - "7.1.1"
31
32
  - "main"
32
- postgres-version: ["9.6", "11", "14"]
33
+ postgres-version: ["12", "13", "14", "15", "16"]
33
34
  exclude:
34
35
  - ruby-version: "3.2"
35
- rails-version: "6.1.5"
36
+ rails-version: "6.1.7.6"
37
+ - ruby-version: "3.3"
38
+ rails-version: "6.1.7.6"
36
39
  runs-on: ubuntu-latest
37
40
  services:
38
41
  postgres:
@@ -66,15 +69,18 @@ jobs:
66
69
  strategy:
67
70
  fail-fast: false
68
71
  matrix:
69
- ruby-version: ["2.7", "3.0", "3.1", "3.2"]
72
+ ruby-version: ["3.0", "3.1", "3.2", "3.3"]
70
73
  rails-version:
71
- - "6.1.5"
72
- - "7.0.4"
74
+ - "6.1.7.6"
75
+ - "7.0.8"
76
+ - "7.1.1"
73
77
  - "main"
74
- mysql-version: ["5.7", "8.0"]
78
+ mysql-version: ["8.0", "8.2"]
75
79
  exclude:
76
- - ruby-version: 3.2
77
- rails-version: "6.1.5"
80
+ - ruby-version: "3.2"
81
+ rails-version: "6.1.7.6"
82
+ - ruby-version: "3.3"
83
+ rails-version: "6.1.7.6"
78
84
  runs-on: ubuntu-latest
79
85
  services:
80
86
  mysql:
data/.gitignore CHANGED
@@ -55,9 +55,6 @@ Gemfile.lock
55
55
  # Used by RuboCop. Remote config files pulled in from inherit_from directive.
56
56
  # .rubocop-https?--*
57
57
 
58
- # Project-specific ignores
59
- .rspec
60
-
61
58
  # VSCode
62
59
  .vscode
63
60
 
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --require spec_helper
data/.rubocop.yml CHANGED
@@ -4,7 +4,7 @@ inherit_gem:
4
4
  gc_ruboconfig: rubocop.yml
5
5
 
6
6
  AllCops:
7
- TargetRubyVersion: 2.7
7
+ TargetRubyVersion: 3.0
8
8
  NewCops: enable
9
9
 
10
10
  Metrics/AbcSize:
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 3.2.0
1
+ 3.3.0
data/CHANGELOG.md CHANGED
@@ -1,43 +1,90 @@
1
- ## v10.2.3 2nd Aug 2023
1
+ # Changelog
2
+ <!-- markdownlint-disable no-duplicate-heading -->
3
+
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## v12.1.0 5th January 2024
8
+
9
+ ### Fixed
10
+
11
+ - Fixed autoloading the VERSION constants
12
+ - Fixed Ensuring inheritance issues with STI tabled
13
+ - Enabled gaplock protection when using trilogy mysql adapter
14
+
15
+ ### Added
16
+
17
+ - Added Ruby 3.3 to build matrix
18
+ - Added optional initial transition
19
+
20
+ ## v12.0.0 30th November 2023
21
+
22
+ ### Added
23
+
24
+ - Added multi-database support [#522](https://github.com/gocardless/statesman/pull/522)
25
+ - This now uses the correct ActiveRecord connection for the model or transition in a multi-database environment
26
+
27
+ ## v11.0.0 3rd November 2023
2
28
 
3
29
  ### Changed
30
+
31
+ - Updated to support ActiveRecord > 7.2
32
+ - Remove support for:
33
+ - Ruby; 2.7
34
+ - Postgres; 9.6, 10, 11
35
+ - MySQL; 5.7
36
+
37
+ ## v10.2.3 2nd Aug 2023
38
+
39
+ ### Fixed
40
+
4
41
  - Fixed calls to reloading internal cache is the state_machine was made private / protected
5
42
 
6
43
  ## v10.2.2 21st April 2023
7
44
 
8
45
  ### Changed
46
+
9
47
  - Calling `active_record.reload` resets the adapater's internal cache
10
48
 
11
49
  ## v10.2.1 3rd April 2023
12
50
 
13
- ### Changed
51
+ ### Fixed
52
+
14
53
  - Fixed an edge case where `adapter.reset` were failing if the cache is empty
15
54
 
16
55
  ## v10.2.0 3rd April 2023
17
56
 
18
- ### Changed
57
+ ### Fixed
58
+
19
59
  - Fixed caching of `last_transition` [#505](https://github.com/gocardless/statesman/pull/505)
20
60
 
21
61
  ## v10.1.0 10th March 2023
22
62
 
23
- ### CHanged
63
+ ### Changed
64
+
24
65
  - Add the source location of the guard callback to `Statesman::GuardFailedError`
25
66
 
26
67
  ## v10.0.0 17th May 2022
27
68
 
28
- ### Changed
69
+ ### Added
70
+
29
71
  - Added support for Ruby 3.1 [#462](https://github.com/gocardless/statesman/pull/462)
30
- - Removed support for Ruby 2.5 and 2.6 [#462](https://github.com/gocardless/statesman/pull/462)
31
72
  - Added `remove_state` and `remove_transitions` methods to `Statesman::Machine` [#464](https://github.com/gocardless/statesman/pull/464)
32
73
 
74
+ ### Changed
75
+
76
+ - Removed support for Ruby 2.5 and 2.6 [#462](https://github.com/gocardless/statesman/pull/462)
77
+
33
78
  ## v9.0.1 4th February 2021
34
79
 
35
80
  ### Changed
81
+
36
82
  - Deprecate `ActiveRecord::Base.default_timezone` in favour of `ActiveRecord.default_timezone` [#446](https://github.com/gocardless/statesman/pull/446)
37
83
 
38
84
  ## v9.0.0 9th August 2021
39
85
 
40
86
  ### Added
87
+
41
88
  - Added Ruby 3.0 support
42
89
 
43
90
  ### Breaking changes
@@ -47,19 +94,20 @@
47
94
  ## v8.0.3 8th June 2021
48
95
 
49
96
  ### Added
97
+
50
98
  - Implement `Machine#last_transition_to`, to find the last transition to a given state
51
99
  [#438](https://github.com/gocardless/statesman/pull/438)
52
100
 
53
101
  ## v8.0.2 30th March 2021
54
102
 
55
- ### Changed
103
+ ### Fixed
56
104
 
57
105
  - Fixed a bug where the `history` of a model was left in an incorrect state after a transition
58
106
  conflict [#433](https://github.com/gocardless/statesman/pull/433)
59
107
 
60
108
  ## v8.0.1 20th January 2021
61
109
 
62
- ### Changed
110
+ ### Fixed
63
111
 
64
112
  - Fixed `no implicit conversion of nil into String` error when quoting null values
65
113
  [#427](https://github.com/gocardless/statesman/pull/427)
@@ -103,43 +151,57 @@
103
151
 
104
152
  ## v7.1.0, 10th Feb 2020
105
153
 
154
+ ### Fixed
155
+
106
156
  - Fix `to_s` on `TransitionFailedError` & `GuardFailedError`. `.message` and
107
157
  `.to_s` diverged when `from` and `to` accessors where added in v4.1.3
108
158
 
109
159
  ## v7.0.1, 8th Jan 2020
110
160
 
161
+ ### Fixed
162
+
111
163
  - Fix deprecation warning with Ruby 2.7 [#386](https://github.com/gocardless/statesman/pull/386)
112
164
 
113
165
  ## v7.0.0, 8th Jan 2020
114
166
 
115
- **Breaking changes**
167
+ ### Breaking changes
116
168
 
117
169
  - Drop official support for Rails 4.2, 5.0 and 5.1, following our [compatibility
118
170
  policy](https://github.com/gocardless/statesman/blob/master/docs/COMPATIBILITY.md).
119
171
 
120
172
  ## v6.0.0, 20th December 2019
121
173
 
122
- **Breaking changes**
174
+ ### Breaking changes
123
175
 
124
176
  - Drop official support for Ruby 2.2 and 2.3 following our [compatibility
125
177
  policy](https://github.com/gocardless/statesman/blob/master/docs/COMPATIBILITY.md).
126
178
 
127
179
  ## v5.2.0, 17th December 2019
128
180
 
181
+ ### Changed
182
+
129
183
  - Issue `most_recent_transition_join` query as a single-line string [#381](https://github.com/gocardless/statesman/pull/381)
130
184
 
131
185
  ## v5.1.0, 22th November 2019
132
186
 
187
+ ### Fixed
188
+
133
189
  - Correct `Statesman::Adapters::ActiveRecordQueries` error text [@Bramjetten](https://github.com/gocardless/statesman/pull/376)
134
190
  - Removes duplicate `map` call [Isaac Seymour](https://github.com/gocardless/statesman/pull/362)
191
+
192
+ ### Changed
193
+
135
194
  - Update changelog with instructions of how to use `ActiveRecordQueries` added
136
195
  in v5.0.0
137
196
  - Pass exception into `after_transition_failure` and `after_guard_failure` callbacks [@credric-cordenier](https://github.com/gocardless/statesman/pull/378)
138
197
 
139
198
  ## v5.0.0, 11th November 2019
140
199
 
200
+ ### Added
201
+
141
202
  - Adds new syntax and restrictions to ActiveRecordQueries [PR#358](https://github.com/gocardless/statesman/pull/358). With the introduction of this, defining `self.transition_class` or `self.initial_state` is deprecated and will be removed in the next major release.
142
203
  Change
204
+
143
205
  ```ruby
144
206
  include Statesman::Adapters::ActiveRecordQueries
145
207
  def self.initial_state
@@ -149,7 +211,9 @@
149
211
  MyTransition
150
212
  end
151
213
  ```
214
+
152
215
  to
216
+
153
217
  ```ruby
154
218
  include Statesman::Adapters::ActiveRecordQueries[
155
219
  initial_state: :initial,
@@ -159,34 +223,51 @@
159
223
 
160
224
  ## v4.1.4, 11th November 2019
161
225
 
226
+ ### Changed
227
+
162
228
  - Reverts the breaking changes from [PR#358](https://github.com/gocardless/statesman/pull/358) & `v4.1.3` that where included in the last minor release. If you have changed your code to work with these changes `v5.0.0` will be a copy of `v4.1.3` with a bugfix applied.
163
229
 
164
230
  ## v4.1.3, 6th November 2019
165
231
 
232
+ ### Added
233
+
166
234
  - Add accessible from / to state attributes on the `TransitionFailedError` to avoid parsing strings [@ahjmorton](https://github.com/gocardless/statesman/pull/367)
167
235
  - Add `after_transition_failure` mechanism [@credric-cordenier](https://github.com/gocardless/statesman/pull/366)
168
236
 
169
237
  ## v4.1.2, 17th August 2019
170
238
 
239
+ ### Added
240
+
171
241
  - Add support for Rails 6 [@greysteil](https://github.com/gocardless/statesman/pull/360)
172
242
 
173
243
  ## v4.1.1, 6th July 2019
174
244
 
245
+ ### Fixed
246
+
175
247
  - Fix statesman index detection for indexes that start t-z [@hmarr](https://github.com/gocardless/statesman/pull/354)
176
248
  - Correct access of metadata via `state_machine` [@glenpike](https://github.com/gocardless/statesman/pull/349)
177
249
 
178
250
  ## v4.1.0, 10 April 2019
179
251
 
180
- - Add better support for mysql (and others) in `transition_conflict_error?` [@greysteil](https://github.com/greysteil) (https://github.com/gocardless/statesman/pull/342)
252
+ ### Changed
253
+
254
+ - Add better support for mysql (and others) in `transition_conflict_error?` [@greysteil](https://github.com/greysteil) (<https://github.com/gocardless/statesman/pull/342>)
181
255
 
182
256
  ## v4.0.0, 22 February 2019
183
257
 
184
- - Forces Statesman to use a new transactions with `requires_new: true` (https://github.com/gocardless/statesman/pull/249)
258
+ ### Fixed
259
+
185
260
  - Fixes an issue with `after_commit` transition blocks that where being
186
261
  executed even if the transaction rolled back. ([patch](https://github.com/gocardless/statesman/pull/338) by [@matid](https://github.com/matid))
187
262
 
263
+ ### Changed
264
+
265
+ - Forces Statesman to use a new transactions with `requires_new: true` (<https://github.com/gocardless/statesman/pull/249>)
266
+
188
267
  ## v3.5.0, 2 November 2018
189
268
 
269
+ ### Changed
270
+
190
271
  - Expose `most_recent_transition_join` - ActiveRecords `or` requires that both
191
272
  sides of the query match up. Exposing this methods makes things easier if
192
273
  one side of the `or` uses `in_state` or `not_in_state`. (patch by [@adambutler](https://github.com/adambutler))
@@ -194,37 +275,50 @@
194
275
 
195
276
  ## v3.4.1, 14 February 2018 ❤️
196
277
 
278
+ ### Added
279
+
197
280
  - Support ActiveRecord transition classes which don't include `Statesman::Adapters::ActiveRecordTransition`, and thus don't have a `.updated_timestamp_column` method (see #310 for further details) (patch by [@timrogers](https://github.com/timrogers))
198
281
 
199
282
  ## v3.4.0, 12 February 2018
200
283
 
284
+ ### Changed
285
+
201
286
  - When unsetting the `most_recent` flag during a transition, don't assume that transitions have an `updated_at` attribute, but rather allow the "updated timestamp column" to be re-configured or disabled entirely (patch by [@timrogers](https://github.com/timrogers))
202
287
 
203
288
  ## v3.3.0, 5 January 2018
204
289
 
290
+ ### Changed
291
+
205
292
  - Touch `updated_at` on transitions when unsetting `most_recent` flag (patch by [@NGMarmaduke](https://github.com/NGMarmaduke))
206
293
  - Fix `force_reload` for ActiveRecord models with loaded transitions (patch by [@jacobpgn](https://github.com/))
207
294
 
208
295
  ## v3.2.0, 27 November 2017
209
296
 
297
+ ### Added
298
+
210
299
  - Allow specifying metadata with `Machine#allowed_transitions` (patch by [@vvondra](https://github.com/vvondra))
211
300
 
212
301
  ## v3.1.0, 1 September 2017
213
302
 
303
+ ### Added
304
+
214
305
  - Add support for Rails 5.0.x and 5.1.x (patch by [@kenchan0130](https://github.com/kenchan0130) and [@timrogers](https://github.com/timrogers))
306
+
307
+ ### Changed
308
+
215
309
  - Run tests in CircleCI instead of TravisCI (patch by [@timrogers](https://github.com/timrogers))
216
310
  - Update Rubocop and fix offences (patch by [@timrogers](https://github.com/timrogers))
217
311
 
218
312
  ## v3.0.0, 3 July 2017
219
313
 
220
- *Breaking changes*
314
+ ### Breaking changes
221
315
 
222
316
  - Drop support for Rails < 4.2
223
317
  - Drop support for Ruby < 2.2
224
318
 
225
319
  For details on our compatibility policy, see `docs/COMPATIBILITY.md`.
226
320
 
227
- *Changes*
321
+ ### Changed
228
322
 
229
323
  - Better handling of custom transition association names (patch by [@greysteil](https://github.com/greysteil))
230
324
  - Add foreign keys to transition table generator (patch by [@greysteil](https://github.com/greysteil))
@@ -232,6 +326,8 @@ For details on our compatibility policy, see `docs/COMPATIBILITY.md`.
232
326
 
233
327
  ## v2.0.1, 29 March 2016
234
328
 
329
+ ### Added
330
+
235
331
  - Add support for Rails 5 (excluding Mongoid adapter)
236
332
 
237
333
  ## v2.0.0, 5 January 2016
@@ -240,7 +336,7 @@ For details on our compatibility policy, see `docs/COMPATIBILITY.md`.
240
336
 
241
337
  ## v2.0.0.rc1, 23 December 2015
242
338
 
243
- *Breaking changes*
339
+ ### Breaking changes
244
340
 
245
341
  - Unset most_recent after before transitions
246
342
  - TL;DR: set `autosave: false` on the `has_many` association between your parent and transition model and this change will almost certainly not affect your integration
@@ -258,7 +354,7 @@ For details on our compatibility policy, see `docs/COMPATIBILITY.md`.
258
354
  - To keep Statesman lightweight we've moved event functionality into the `statesman-events` gem
259
355
  - If you are using events, add `statesman-events` to your gemfile and include `Statesman::Events` in your state machines
260
356
 
261
- *Changes*
357
+ ### Changed
262
358
 
263
359
  - Add after_destroy hook to ActiveRecord transition model templates
264
360
  - Add `in_state?` instance method to `Statesman::Machine`
@@ -266,56 +362,73 @@ For details on our compatibility policy, see `docs/COMPATIBILITY.md`.
266
362
 
267
363
  ## v1.3.1, 2 July 2015
268
364
 
365
+ ### Changed
366
+
269
367
  - Fix `in_state` queries with a custom `transition_name` (patch by [0tsuki](https://github.com/0tsuki))
270
368
  - Fix `backfill_most_recent` rake task for databases that support partial indexes (patch by [greysteil](https://github.com/greysteil))
271
369
 
272
370
  ## v1.3.0, 20 June 2015
273
371
 
372
+ ### Changed
373
+
274
374
  - Rename `last_transition` alias in `ActiveRecordQueries` to `most_recent_#{model_name}`, to allow merging of two such queries (patch by [@isaacseymour](https://github.com/isaacseymour))
275
375
 
276
376
  ## v1.2.5, 17 June 2015
277
377
 
378
+ ### Changed
379
+
278
380
  - Make `backfill_most_recent` rake task db-agnostic (patch by [@timothyp](https://github.com/timothyp))
279
381
 
280
382
  ## v1.2.4, 16 June 2015
281
383
 
384
+ ### Changed
385
+
282
386
  - Clarify error messages when misusing `Statesman::Adapters::ActiveRecordTransition` (patch by [@isaacseymour](https://github.com/isaacseymour))
283
387
 
284
388
  ## v1.2.3, 14 April 2015
285
389
 
390
+ ### Changed
391
+
286
392
  - Fix use of most_recent column in MySQL (partial indexes aren't supported) (patch by [@greysteil](https://github.com/greysteil))
287
393
 
288
394
  ## v1.2.2, 24 March 2015
289
395
 
396
+ ### Added
397
+
290
398
  - Add support for namespaced transition models (patch by [@DanielWright](https://github.com/DanielWright))
291
399
 
292
400
  ## v1.2.1, 24 March 2015
293
401
 
402
+ ### Added
403
+
294
404
  - Add support for Postgres 9.4's `jsonb` column type (patch by [@isaacseymour](https://github.com/isaacseymour))
295
405
 
296
406
  ## v1.2.0, 18 March 2015
297
407
 
298
- *Changes*
408
+ ### Added
299
409
 
300
410
  - Add a `most_recent` column to transition tables to greatly speed up queries (ActiveRecord adapter only).
301
411
  - All queries are backwards-compatible, so everything still works without the new column.
302
412
  - The upgrade path is:
303
413
  - Generate and run a migration for adding the column, by running `rails generate statesman:add_most_recent <ParentModel> <TransitionModel>`.
304
- - Backfill the `most_recent` column on old records by running `rake statesman:backfill_most_recent[ParentModel] `.
414
+ - Backfill the `most_recent` column on old records by running `rake statesman:backfill_most_recent[ParentModel]`.
305
415
  - Add constraints and indexes to the transition table that make use of the new field, by running `rails g statesman:add_constraints_to_most_recent <ParentModel> <TransitionModel>`.
306
416
  - The upgrade path has been designed to be zero-downtime, even on large tables. As a result, please note that queries will only use the `most_recent` field after the constraints have been added.
307
- - `ActiveRecordQueries.{not_,}in_state` now accepts an array of states.
308
417
 
418
+ ### Changed
419
+
420
+ - `ActiveRecordQueries.{not_,}in_state` now accepts an array of states.
309
421
 
310
422
  ## v1.1.0, 9 December 2014
311
- *Fixes*
423
+
424
+ ### Fixed
312
425
 
313
426
  - Support for Rails 4.2.0.rc2:
314
427
  - Remove use of serialized_attributes when using 4.2+. (patch by [@greysteil](https://github.com/greysteil))
315
428
  - Use reflect_on_association rather than directly using the reflections hash. (patch by [@timrogers](https://github.com/timrogers))
316
429
  - Fix `ActiveRecordQueries.in_state` when `Model.initial_state` is defined as a symbol. (patch by [@isaacseymour](https://github.com/isaacseymour))
317
430
 
318
- *Changes*
431
+ ### Changed
319
432
 
320
433
  - Transition metadata now defaults to `{}` rather than `nil`. (patch by [@greysteil](https://github.com/greysteil))
321
434
 
@@ -324,99 +437,126 @@ For details on our compatibility policy, see `docs/COMPATIBILITY.md`.
324
437
  No changes from v1.0.0.beta2
325
438
 
326
439
  ## v1.0.0.beta2, 10 October 2014
327
- *Breaking changes*
440
+
441
+ ### Breaking changes
328
442
 
329
443
  - Rename `ActiveRecordModel` to `ActiveRecordQueries`, to reflect the fact that it mixes in some helpful scopes, but is not required.
330
444
 
331
445
  ## v1.0.0.beta1, 9 October 2014
332
- *Breaking changes*
446
+
447
+ ### Breaking changes
333
448
 
334
449
  - Classes which include `ActiveRecordModel` must define an `initial_state` class method.
335
450
 
336
- *Fixes*
451
+ ### Fixed
337
452
 
338
453
  - `ActiveRecordModel.in_state` and `ActiveRecordModel.not_in_state` now handle inital states correctly (patch by [@isaacseymour](https://github.com/isaacseymour))
339
454
 
340
- *Additions*
455
+ ### Added
341
456
 
342
457
  - Transition tables created by generated migrations have `NOT NULL` constraints on `to_state`, `sort_key` and foreign key columns (patch by [@greysteil](https://github.com/greysteil))
343
458
  - `before_transition` and `after_transition` allow an array of to states (patch by [@isaacseymour](https://github.com/isaacseymour))
344
459
 
345
460
  ## v0.8.3, 2 September 2014
346
- *Fixes*
461
+
462
+ ### Fixed
347
463
 
348
464
  - Optimisation for Machine#available_events (patch by [@pacso](https://github.com/pacso))
349
465
 
350
466
  ## v0.8.2, 2 September 2014
351
- *Fixes*
467
+
468
+ ### Fixed
352
469
 
353
470
  - Stop generating a default value for the metadata column if using MySQL.
354
471
 
355
472
  ## v0.8.1, 19 August 2014
356
- *Fixes*
473
+
474
+ ### Fixed
357
475
 
358
476
  - Adds check in Machine#transition to make sure the 'to' state is not an empty array (patch by [@barisbalic](https://github.com/barisbalic))
359
477
 
360
478
  ## v0.8.0, 29 June 2014
361
- *Additions*
479
+
480
+ ### Added
362
481
 
363
482
  - Events. Machines can now define events as a logical grouping of transitions (patch by [@iurimatias](https://github.com/iurimatias))
364
483
  - Retries. Individual transitions can be executed with a retry policy by wrapping the method call in a `Machine.retry_conflicts {}` block (patch by [@greysteil](https://github.com/greysteil))
365
484
 
366
485
  ## v0.7.0, 25 June 2014
367
- *Additions*
486
+
487
+ ### Added
368
488
 
369
489
  - `Adapters::ActiveRecord` now handles `ActiveRecord::RecordNotUnique` errors explicitly and re-raises with a `Statesman::TransitionConflictError` if it is due to duplicate sort_keys (patch by [@greysteil](https://github.com/greysteil))
370
490
 
371
491
  ## v0.6.1, 21 May 2014
372
- *Fixes*
492
+
493
+ ### Fixed
494
+
373
495
  - Fixes an issue where the wrong transition was passed to after_transition callbacks for the second and subsequent transition of a given state machine (patch by [@alan](https://github.com/alan))
374
496
 
375
497
  ## v0.6.0, 19 May 2014
376
- *Additions*
498
+
499
+ ### Added
500
+
377
501
  - Generators now handle namespaced classes (patch by [@hrmrebecca](https://github.com/hrmrebecca))
378
502
 
379
- *Changes*
503
+ ### Changed
504
+
380
505
  - `Machine#transition_to` now only swallows Statesman generated errors. An exception in your guard or callback will no longer be caught by Statesman (patch by [@paulspringett](https://github.com/paulspringett))
381
506
 
382
507
  ## v0.5.0, 27 March 2014
383
- *Additions*
508
+
509
+ ### Added
510
+
384
511
  - Scope methods. Adds a module which can be mixed in to an ActiveRecord model to provide `.in_state` and `.not_in_state` query scopes.
385
512
  - Adds `Machine#after_initialize` hook (patch by [@att14](https://github.com/att14))
386
513
 
387
- *Fixes*
514
+ ### Fixed
515
+
388
516
  - Added MongoidTransition to the autoload statements, fixing [#29](https://github.com/gocardless/statesman/issues/29) (patch by [@tomclose](https://github.com/tomclose))
389
517
 
390
518
  ## v0.4.0, 27 February 2014
391
- *Additions*
519
+
520
+ ### Added
521
+
392
522
  - Adds after_commit flag to after_transition for callbacks to be executed after the transaction has been
393
523
  committed on the ActiveRecord adapter. These callbacks will still be executed on non transactional adapters.
394
524
 
395
525
  ## v0.3.0, 20 February 2014
396
- *Additions*
526
+
527
+ ### Added
528
+
397
529
  - Adds Machine#allowed_transitions method (patch by [@prikha](https://github.com/prikha))
398
530
 
399
531
  ## v0.2.1, 31 December 2013
400
- *Fixes*
532
+
533
+ ### Fixed
534
+
401
535
  - Don't add attr_accessible to generated transition model if running in Rails 4
402
536
 
403
537
  ## v0.2.0, 16 December 2013
404
- *Additions*
538
+
539
+ ### Added
540
+
405
541
  - Adds Ruby 1.9.3 support (patch by [@jakehow](https://github.com/jakehow))
406
542
  - All Mongo dependent tests are tagged so they can be excluded from test runs
407
543
 
408
- *Changes*
544
+ ### Changed
545
+
409
546
  - Specs now crash immediately if Mongo is not running
410
547
 
411
548
  ## v0.1.0, 5 November 2013
412
549
 
413
- *Additions*
550
+ ### Added
551
+
414
552
  - Adds Mongoid adapter and generators (patch by [@dluxemburg](https://github.com/dluxemburg))
415
553
 
416
- *Changes*
554
+ ### Changed
555
+
417
556
  - Replaces `config#transition_class` with `Statesman::Adapters::ActiveRecordTransition` mixin. (inspired by [@cjbell88](https://github.com/cjbell88))
418
557
  - Renames the active record transition generator from `statesman:transition` to `statesman:active_record_transition`.
419
558
  - Moves to using `require_relative` internally where possible to avoid stomping on application load paths.
420
559
 
421
- ## v0.0.1, 28 October 2013.
560
+ ## v0.0.1, 28 October 2013
561
+
422
562
  - Initial release