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.
- checksums.yaml +4 -4
- data/.github/workflows/tests.yml +17 -11
- data/.gitignore +0 -3
- data/.rspec +1 -0
- data/.rubocop.yml +1 -1
- data/.ruby-version +1 -1
- data/CHANGELOG.md +183 -43
- data/CONTRIBUTING.md +14 -13
- data/Gemfile +2 -2
- data/README.md +120 -62
- data/docs/COMPATIBILITY.md +2 -2
- data/lib/generators/statesman/generator_helpers.rb +1 -1
- data/lib/statesman/adapters/active_record.rb +26 -33
- data/lib/statesman/adapters/active_record_queries.rb +2 -2
- data/lib/statesman/adapters/active_record_transition.rb +5 -1
- data/lib/statesman/callback.rb +2 -2
- data/lib/statesman/config.rb +3 -10
- data/lib/statesman/machine.rb +8 -0
- data/lib/statesman/version.rb +1 -1
- data/lib/statesman.rb +3 -5
- data/lib/tasks/statesman.rake +2 -2
- data/spec/generators/statesman/active_record_transition_generator_spec.rb +7 -1
- data/spec/generators/statesman/migration_generator_spec.rb +5 -1
- data/spec/spec_helper.rb +34 -8
- data/spec/statesman/adapters/active_record_queries_spec.rb +1 -3
- data/spec/statesman/adapters/active_record_spec.rb +58 -39
- data/spec/statesman/adapters/active_record_transition_spec.rb +5 -2
- data/spec/statesman/adapters/memory_spec.rb +0 -1
- data/spec/statesman/adapters/memory_transition_spec.rb +0 -1
- data/spec/statesman/adapters/shared_examples.rb +0 -2
- data/spec/statesman/adapters/type_safe_active_record_queries_spec.rb +1 -3
- data/spec/statesman/callback_spec.rb +0 -2
- data/spec/statesman/config_spec.rb +0 -2
- data/spec/statesman/exceptions_spec.rb +1 -3
- data/spec/statesman/guard_spec.rb +0 -2
- data/spec/statesman/machine_spec.rb +71 -2
- data/spec/statesman/utils_spec.rb +0 -2
- data/spec/support/active_record.rb +55 -13
- data/spec/support/exactly_query_databases.rb +35 -0
- data/statesman.gemspec +5 -5
- metadata +14 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d49f534086023febd344f7eb73b162903a28e3fd77ee430856d42242aafda37c
|
4
|
+
data.tar.gz: aba9670be235de98143f0a2ae0d15b9b7b32c8a9699901049e5cd9d931e29981
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d68959bd95e90bd0a986de5dd7197d21ac5535a5500d5d528b599fd07d26611125ce7e926f33efb5140f2ecbffa1c78dbb66e6d5f2209eeabe95ee49a4a862f8
|
7
|
+
data.tar.gz: 449e98a18f512eaff9a1ea500f9415b016bc8e775f7e1b1a7b9ffc393038112b3689ff4e7d364cbff9be6d23e3c4768d373dda3df7339249b53aa7a9d2e33136
|
data/.github/workflows/tests.yml
CHANGED
@@ -24,15 +24,18 @@ jobs:
|
|
24
24
|
strategy:
|
25
25
|
fail-fast: false
|
26
26
|
matrix:
|
27
|
-
ruby-version: ["
|
27
|
+
ruby-version: ["3.0", "3.1", "3.2", "3.3"]
|
28
28
|
rails-version:
|
29
|
-
- "6.1.
|
30
|
-
- "7.0.
|
29
|
+
- "6.1.7.6"
|
30
|
+
- "7.0.8"
|
31
|
+
- "7.1.1"
|
31
32
|
- "main"
|
32
|
-
postgres-version: ["
|
33
|
+
postgres-version: ["12", "13", "14", "15", "16"]
|
33
34
|
exclude:
|
34
35
|
- ruby-version: "3.2"
|
35
|
-
rails-version: "6.1.
|
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: ["
|
72
|
+
ruby-version: ["3.0", "3.1", "3.2", "3.3"]
|
70
73
|
rails-version:
|
71
|
-
- "6.1.
|
72
|
-
- "7.0.
|
74
|
+
- "6.1.7.6"
|
75
|
+
- "7.0.8"
|
76
|
+
- "7.1.1"
|
73
77
|
- "main"
|
74
|
-
mysql-version: ["
|
78
|
+
mysql-version: ["8.0", "8.2"]
|
75
79
|
exclude:
|
76
|
-
- ruby-version: 3.2
|
77
|
-
rails-version: "6.1.
|
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
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--require spec_helper
|
data/.rubocop.yml
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.
|
1
|
+
3.3.0
|
data/CHANGELOG.md
CHANGED
@@ -1,43 +1,90 @@
|
|
1
|
-
|
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
|
-
###
|
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
|
-
###
|
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
|
-
###
|
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
|
-
###
|
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
|
-
###
|
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
|
-
###
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
446
|
+
|
447
|
+
### Breaking changes
|
333
448
|
|
334
449
|
- Classes which include `ActiveRecordModel` must define an `initial_state` class method.
|
335
450
|
|
336
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
498
|
+
|
499
|
+
### Added
|
500
|
+
|
377
501
|
- Generators now handle namespaced classes (patch by [@hrmrebecca](https://github.com/hrmrebecca))
|
378
502
|
|
379
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
550
|
+
### Added
|
551
|
+
|
414
552
|
- Adds Mongoid adapter and generators (patch by [@dluxemburg](https://github.com/dluxemburg))
|
415
553
|
|
416
|
-
|
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
|