has_state_machine 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 825270788dd41e2ffaee9573eea5e6bda6b63a21d9520cfd7805070feff0fac3
4
- data.tar.gz: fd7679aafbd2aa7a21b522b99b13d7481d3b7bb8a345c4602380fdab581215d8
3
+ metadata.gz: 45eda1d8fea5dc52d88061386c86631f2af4b38651b4b8ea7051ea6e1873f034
4
+ data.tar.gz: ba0de1f1e78ee90f85f4753d888cf8dbe040d6993b748091626284a7a18a84d3
5
5
  SHA512:
6
- metadata.gz: 5a6251974a28867af9fd6f589f6680e231ad3e6e864e44e0f7303677e3d82ea492956c2bb48adc9c04ed56308158f13bd54ab63cdb11f6f995525adc42b0da27
7
- data.tar.gz: 0a5db9a428f4c8f71f129c1c3133f50874f81be8933f5bc1177e0a2fb268c7ad1cd38427a2f2a398f91e721f71fdbf3ceaab094972953f3d2da4e16bb887e3d2
6
+ metadata.gz: fd70251e921b0cc6efd5eb822a1cc015de54d081bd8cff2b9bdddf0e99e4301c7067639c7e2dc68be70b7f6dc40cfff8551b210494543d846ad00c12db6270ed
7
+ data.tar.gz: 71855b126675bff3a7799f5bb1c8e6d3f19d9df9884d3b06198fd2178fdf6ddc0a3e19302df3e0131ff59a1ab4126effef633b25f62228db20d43f9a8fdc3011
data/README.md CHANGED
@@ -5,6 +5,14 @@
5
5
 
6
6
  HasStateMachine uses ruby classes to make creating a finite state machine for your ActiveRecord models a breeze.
7
7
 
8
+ ## Contents
9
+
10
+ - [Installation](#installation)
11
+ - [Usage](#usage)
12
+ - [Changelog](https://github.com/encampment/has_state_machine/blob/master/CHANGELOG.md)
13
+ - [Contributing](#contributing)
14
+ - [License](#license)
15
+
8
16
  ## Installation
9
17
  Add this line to your application's Gemfile:
10
18
 
@@ -70,15 +78,15 @@ module Workflow
70
78
  # There are callbacks for running logic before and after
71
79
  # a transition occurs.
72
80
  before_transition do
73
- Rails.logger.info "Post is being archived\n"
81
+ Rails.logger.info "== Post is being archived ==\n"
74
82
  end
75
83
 
76
84
  after_transition do
77
- Rails.logger.info "Post has been archived\n"
85
+ Rails.logger.info "== Post has been archived ==\n"
78
86
 
79
87
  # You can access the previous state of the object in
80
88
  # after_transition callbacks as well.
81
- Rails.logger.info "Transitioned from #{previous_state}\n"
89
+ Rails.logger.info "== Transitioned from #{previous_state} ==\n"
82
90
  end
83
91
  end
84
92
  end
@@ -95,10 +103,31 @@ post.status # => "draft"
95
103
  post.title = "Foobar"
96
104
  post.status.transition_to(:published) # => true
97
105
  post.status # => "published"
106
+
107
+ post.status.transition_to(:archived)
108
+ # == Post is being archived ==
109
+ # == Post has been archived ==
110
+ # == Transitioned from published ==
111
+ # => true
98
112
  ```
99
113
 
100
114
  ## Contributing
101
- Coming Soon
115
+
116
+ Anyone is encouraged to help improve this project. Here are a few ways you can help:
117
+
118
+ - [Report bugs](https://github.com/encampment/has_state_machine/issues)
119
+ - Fix bugs and [submit pull requests](https://github.com/encampment/has_state_machine/pulls)
120
+ - Write, clarify, or fix documentation
121
+ - Suggest or add new features
122
+
123
+ To get started with development:
124
+
125
+ ```
126
+ git clone https://github.com/encampment/has_state_machine.git
127
+ cd has_state_machine
128
+ bundle install
129
+ bundle exec rake test
130
+ ```
102
131
 
103
132
  ## License
104
133
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -55,7 +55,9 @@ module HasStateMachine
55
55
  # @example Retreiving a users published posts
56
56
  # > Post.published.where(user: user)
57
57
  # #=> [#<Post>]
58
- scope state, -> { where("#{state_attribute} = ?", state) }
58
+ if defined?(ActiveRecord) && (self < ActiveRecord::Base)
59
+ scope state, -> { where("#{state_attribute} = ?", state) }
60
+ end
59
61
 
60
62
  ##
61
63
  # Defines boolean helpers to determine if the active state matches
@@ -76,7 +78,7 @@ module HasStateMachine
76
78
  # Getter for the current state of the model based on the configured state
77
79
  # attribute.
78
80
  def current_state
79
- self[state_attribute]
81
+ attributes.with_indifferent_access[state_attribute]
80
82
  end
81
83
 
82
84
  ##
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module HasStateMachine
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_state_machine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamin Hargett
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-11-05 00:00:00.000000000 Z
12
+ date: 2020-11-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails