nxt_state_machine 0.1.5 → 0.1.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7e66b8a54f30382001a2c1292ac799c92335cb55835e051efb2a3d450409d67f
4
- data.tar.gz: 255c9799a3732ea5ffa3b87048c5d9b6a3f185b43d1d24fb047ceefef89a9514
3
+ metadata.gz: 77b32ce5c0f8c968180650e6497e84076803948c832e84d5c63145ff10050c46
4
+ data.tar.gz: 5a5f210aaf9b8f0d8278a66851f4d3be8f278a4a448975252610b3eebe292b06
5
5
  SHA512:
6
- metadata.gz: dcc9b059691980d6121fd97c2f5814bff20e717054d2c7d4b4e7e678c5b7e299906c4310ac46ebe6a11ac55b443a31248e289fd8b9858e7dbc2247341e981a83
7
- data.tar.gz: 4eb4a0fdfbb88b5014c021279a89cff8638f0e01874b15da7bb45718f0de2c3050d1676ed722e6f0d537885669c43bc32c4bcfdda19319e6388325b1055dd394
6
+ metadata.gz: fbbf6e38dc538a6e5018d9839c591ddf707cc5d348c310582680e8cf588715545214ebe1b16ab70dddad63a0cfa97ab7d66121752ffc1034813128fdb0f2e1e7
7
+ data.tar.gz: ef95346d040eb48905820314241e67009d846c00c71725cc2ab24948db0e426d7cdddb1fd55c01d7e63a15d465d0342adf9d35f888d6c62d1d21ba596f19bd54
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nxt_state_machine (0.1.5)
4
+ nxt_state_machine (0.1.6)
5
5
  activesupport
6
6
  nxt_registry (~> 0.1.3)
7
7
 
@@ -31,7 +31,7 @@ GEM
31
31
  pry (0.12.2)
32
32
  coderay (~> 1.1.0)
33
33
  method_source (~> 0.9.0)
34
- rake (10.5.0)
34
+ rake (12.3.3)
35
35
  rspec (3.9.0)
36
36
  rspec-core (~> 3.9.0)
37
37
  rspec-expectations (~> 3.9.0)
@@ -61,7 +61,7 @@ DEPENDENCIES
61
61
  bundler (~> 2.0)
62
62
  nxt_state_machine!
63
63
  pry
64
- rake (~> 10.0)
64
+ rake (~> 12.0)
65
65
  rspec (~> 3.0)
66
66
  rspec_junit_formatter
67
67
  sqlite3
data/README.md CHANGED
@@ -335,8 +335,6 @@ You can raise an error, have everything rolled back and then have your error han
335
335
  error handler. You can also defuse errors. This means they will not cause a rollback of the transaction during the
336
336
  transition and you can actually persist changes to your model before the defused error is raised and handled.
337
337
 
338
- ### Multiple state machines in the same class
339
-
340
338
  ```ruby
341
339
  state_machine do
342
340
  # ...
@@ -344,6 +342,9 @@ state_machine do
344
342
  defuse CustomError, from: any_state, to: all_states
345
343
 
346
344
  event :approve do
345
+ # You can also defuse on event level
346
+ # defuse CustomError, from: %i[written submitted deleted], to: :approved
347
+
347
348
  transition from: %i[written submitted deleted], to: :approved do |headline:|
348
349
  # This will be save to the database even if defused CustomError is raised after
349
350
  article.update!(headline: headline)
@@ -353,6 +354,12 @@ state_machine do
353
354
 
354
355
  on_error! CustomError from: any_state, to: :approved do |error, transition|
355
356
  # You can still handle the defused Error if you want to
357
+ # You should probably reload your model here to not accidentally save changes that
358
+ # were made to the model during the transition before a non defused error was raised
359
+ article.reload
360
+ # The error callback does not run inside the transaction. No more strings attached here.
361
+ # You can now persist changes to your model again.
362
+ article.update!(error: error.message)
356
363
  end
357
364
  end
358
365
  ```
@@ -379,11 +386,7 @@ end
379
386
 
380
387
 
381
388
  ## TODO
382
- - Test implementations for Hash, AttrAccessor
383
389
  - Decide on how to include state methods in model classes
384
- - Thread safety spec!
385
- - Spec locks?
386
- - Explain locking in readme!
387
390
  - Should we clone machines for each context?
388
391
  - What about inheritance? => What would be the expected behaviour? (dup vs. no dup)
389
392
  => Might also make sense to walk the ancestors chain and collect configure blocks
@@ -1,3 +1,3 @@
1
1
  module NxtStateMachine
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
@@ -38,7 +38,7 @@ Gem::Specification.new do |spec|
38
38
  spec.add_dependency "nxt_registry", "~> 0.1.3"
39
39
 
40
40
  spec.add_development_dependency "bundler", "~> 2.0"
41
- spec.add_development_dependency "rake", "~> 10.0"
41
+ spec.add_development_dependency "rake", "~> 12.0"
42
42
  spec.add_development_dependency "rspec", "~> 3.0"
43
43
  spec.add_development_dependency "pry"
44
44
  spec.add_development_dependency "activerecord"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nxt_state_machine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andreas Robecke
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2020-02-14 00:00:00.000000000 Z
14
+ date: 2020-03-02 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activesupport
@@ -61,14 +61,14 @@ dependencies:
61
61
  requirements:
62
62
  - - "~>"
63
63
  - !ruby/object:Gem::Version
64
- version: '10.0'
64
+ version: '12.0'
65
65
  type: :development
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
69
  - - "~>"
70
70
  - !ruby/object:Gem::Version
71
- version: '10.0'
71
+ version: '12.0'
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: rspec
74
74
  requirement: !ruby/object:Gem::Requirement