state_machines-activerecord 0.3.0 → 0.4.0.pre

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
  SHA1:
3
- metadata.gz: 05961f0c1b5b3ab64919dcde984de7b32760a238
4
- data.tar.gz: d1ec7191b20c2a0bb489e07204a01ebdf6df5f8f
3
+ metadata.gz: b08f23fe776a36406ccb74f5d177acb8a6fc030e
4
+ data.tar.gz: fa00fc7d5506ca635f50682c159393e39a15b88c
5
5
  SHA512:
6
- metadata.gz: 38056137768ae3c54e2ac920f88a87f0acf135f3aeaa2b00fb4d5288532a214574a1737dc93e2c598cccb24165491f27917224ef7eaa550d4484dd82b9eceb14
7
- data.tar.gz: 9362187783fa4720309dc6a27043376a6792d6058aafb7b762cf058d01b73eb087a6009f53d12f2a87db573a72015d18c2c6f66798cce14fd44f546d08407f14
6
+ metadata.gz: 9ae6270e99bac4395564478cb42fd2d6b9a787055e670d47f4f760d2f8c6a2e5747d9283d6f82a55717c853658e0c0b6a855931acfa82f5b3a06ae1ec931e6b2
7
+ data.tar.gz: b4fe5baa32f92b424e6df7c45216385fd971d7ba191be7dc2b6998aae1b096106ec54abb344a3c9633317068048db004016716e02b0bc6d25f1d65acaf8e9d61
@@ -13,6 +13,12 @@ gemfile:
13
13
  - gemfiles/active_record_4.2.gemfile
14
14
 
15
15
  matrix:
16
+ include:
17
+ - gemfile: gemfiles/active_record_edge.gemfile
18
+ rvm: 2.2
16
19
  allow_failures:
17
20
  - rvm: jruby
18
21
  - rvm: rbx-2
22
+ - gemfile: gemfiles/active_record_edge.gemfile
23
+ rvm: 2.2
24
+
data/Appraisals CHANGED
@@ -9,3 +9,13 @@ appraise "active_record_4.2" do
9
9
  gem "activerecord-jdbcsqlite3-adapter", platform: :jruby
10
10
  gem "activerecord", github: 'rails/rails', branch: '4-2-stable'
11
11
  end
12
+
13
+ appraise "active_record_edge" do
14
+ gem "sqlite3", platforms: [:mri, :rbx]
15
+ gem "activerecord-jdbcsqlite3-adapter", platform: :jruby
16
+ gem "activerecord", github: 'rails/rails', branch: 'master'
17
+ gem "method_source" # appears to be a missing dependency of activerecord
18
+ gem "arel", github: 'rails/arel', branch: 'master'
19
+ gem "activemodel", github: 'rails/rails', branch: 'master'
20
+ gem "state_machines-activemodel", '0.4.0.pre'
21
+ end
data/README.md CHANGED
@@ -1,11 +1,15 @@
1
1
  [![Build Status](https://travis-ci.org/state-machines/state_machines-activerecord.svg?branch=master)](https://travis-ci.org/state-machines/state_machines-activerecord)
2
- [![Code Climate](https://codeclimate.com/github/state-machines/state_machines-activerecord.png)](https://codeclimate.com/github/state-machines/state_machines-activerecord)
2
+ [![Code Climate](https://codeclimate.com/github/state-machines/state_machines-activerecord.svg)](https://codeclimate.com/github/state-machines/state_machines-activerecord)
3
3
 
4
4
  # StateMachines Active Record Integration
5
5
 
6
- The Active Record integration adds support for database transactions, automatically
6
+ The Active Record 4.1+ integration adds support for database transactions, automatically
7
7
  saving the record, named scopes, validation errors.
8
8
 
9
+ ## Dependencies
10
+
11
+ Active Record 4.1+
12
+
9
13
  ## Installation
10
14
 
11
15
  Add this line to your application's Gemfile:
@@ -60,11 +64,6 @@ Vehicle.with_state(:parked) # also plural #with_states
60
64
  Vehicle.without_states(:first_gear, :second_gear) # also singular #without_state
61
65
  ```
62
66
 
63
-
64
- Dependencies
65
-
66
- Active Record 4.1+
67
-
68
67
  ## Contributing
69
68
 
70
69
  1. Fork it ( https://github.com/state-machines/state_machines-activerecord/fork )
@@ -0,0 +1,17 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "sqlite3", :platforms => [:mri, :rbx]
6
+ gem "activerecord-jdbcsqlite3-adapter", :platform => :jruby
7
+ gem "activerecord", :github => "rails/rails", :branch => "master"
8
+ gem "method_source"
9
+ gem "arel", :github => "rails/arel", :branch => "master"
10
+ gem "activemodel", :github => "rails/rails", :branch => "master"
11
+ gem "state_machines-activemodel", "0.4.0.pre"
12
+
13
+ platforms :mri_20, :mri_21 do
14
+ gem "pry-byebug"
15
+ end
16
+
17
+ gemspec :path => "../"
@@ -5,12 +5,12 @@ require 'state_machines/integrations/active_record/version'
5
5
  module StateMachines
6
6
  module Integrations #:nodoc:
7
7
  # Adds support for integrating state machines with ActiveRecord models.
8
- #
8
+ #
9
9
  # == Examples
10
- #
10
+ #
11
11
  # Below is an example of a simple state machine defined within an
12
12
  # ActiveRecord model:
13
- #
13
+ #
14
14
  # class Vehicle < ActiveRecord::Base
15
15
  # state_machine :initial => :parked do
16
16
  # event :ignite do
@@ -18,138 +18,138 @@ module StateMachines
18
18
  # end
19
19
  # end
20
20
  # end
21
- #
21
+ #
22
22
  # The examples in the sections below will use the above class as a
23
23
  # reference.
24
- #
24
+ #
25
25
  # == Actions
26
- #
26
+ #
27
27
  # By default, the action that will be invoked when a state is transitioned
28
28
  # is the +save+ action. This will cause the record to save the changes
29
29
  # made to the state machine's attribute. *Note* that if any other changes
30
30
  # were made to the record prior to transition, then those changes will
31
31
  # be saved as well.
32
- #
32
+ #
33
33
  # For example,
34
- #
34
+ #
35
35
  # vehicle = Vehicle.create # => #<Vehicle id: 1, name: nil, state: "parked">
36
36
  # vehicle.name = 'Ford Explorer'
37
37
  # vehicle.ignite # => true
38
38
  # vehicle.reload # => #<Vehicle id: 1, name: "Ford Explorer", state: "idling">
39
- #
40
- # *Note* that if you want a transition to update additional attributes of the record,
41
- # either the changes need to be made in a +before_transition+ callback or you need
39
+ #
40
+ # *Note* that if you want a transition to update additional attributes of the record,
41
+ # either the changes need to be made in a +before_transition+ callback or you need
42
42
  # to save the record manually.
43
43
  #
44
44
  # == Events
45
- #
45
+ #
46
46
  # As described in StateMachines::InstanceMethods#state_machine, event
47
47
  # attributes are created for every machine that allow transitions to be
48
48
  # performed automatically when the object's action (in this case, :save)
49
49
  # is called.
50
- #
50
+ #
51
51
  # In ActiveRecord, these automated events are run in the following order:
52
52
  # * before validation - Run before callbacks and persist new states, then validate
53
53
  # * before save - If validation was skipped, run before callbacks and persist new states, then save
54
54
  # * after save - Run after callbacks
55
- #
55
+ #
56
56
  # For example,
57
- #
57
+ #
58
58
  # vehicle = Vehicle.create # => #<Vehicle id: 1, name: nil, state: "parked">
59
59
  # vehicle.state_event # => nil
60
60
  # vehicle.state_event = 'invalid'
61
61
  # vehicle.valid? # => false
62
62
  # vehicle.errors.full_messages # => ["State event is invalid"]
63
- #
63
+ #
64
64
  # vehicle.state_event = 'ignite'
65
65
  # vehicle.valid? # => true
66
66
  # vehicle.save # => true
67
67
  # vehicle.state # => "idling"
68
68
  # vehicle.state_event # => nil
69
- #
69
+ #
70
70
  # Note that this can also be done on a mass-assignment basis:
71
- #
71
+ #
72
72
  # vehicle = Vehicle.create(:state_event => 'ignite') # => #<Vehicle id: 1, name: nil, state: "idling">
73
73
  # vehicle.state # => "idling"
74
- #
74
+ #
75
75
  # This technique is always used for transitioning states when the +save+
76
76
  # action (which is the default) is configured for the machine.
77
- #
77
+ #
78
78
  # === Security implications
79
- #
79
+ #
80
80
  # Beware that public event attributes mean that events can be fired
81
81
  # whenever mass-assignment is being used. If you want to prevent malicious
82
82
  # users from tampering with events through URLs / forms, the attribute
83
83
  # should be protected like so:
84
- #
84
+ #
85
85
  # class Vehicle < ActiveRecord::Base
86
86
  # attr_protected :state_event
87
87
  # # attr_accessible ... # Alternative technique
88
- #
88
+ #
89
89
  # state_machine do
90
90
  # ...
91
91
  # end
92
92
  # end
93
- #
93
+ #
94
94
  # If you want to only have *some* events be able to fire via mass-assignment,
95
95
  # you can build two state machines (one public and one protected) like so:
96
- #
96
+ #
97
97
  # class Vehicle < ActiveRecord::Base
98
98
  # attr_protected :state_event # Prevent access to events in the first machine
99
- #
99
+ #
100
100
  # state_machine do
101
101
  # # Define private events here
102
102
  # end
103
- #
103
+ #
104
104
  # # Public machine targets the same state as the private machine
105
105
  # state_machine :public_state, :attribute => :state do
106
106
  # # Define public events here
107
107
  # end
108
108
  # end
109
- #
109
+ #
110
110
  # == Transactions
111
- #
111
+ #
112
112
  # In order to ensure that any changes made during transition callbacks
113
113
  # are rolled back during a failed attempt, every transition is wrapped
114
114
  # within a transaction.
115
- #
115
+ #
116
116
  # For example,
117
- #
117
+ #
118
118
  # class Message < ActiveRecord::Base
119
119
  # end
120
- #
120
+ #
121
121
  # Vehicle.state_machine do
122
122
  # before_transition do |vehicle, transition|
123
123
  # Message.create(:content => transition.inspect)
124
124
  # false
125
125
  # end
126
126
  # end
127
- #
127
+ #
128
128
  # vehicle = Vehicle.create # => #<Vehicle id: 1, name: nil, state: "parked">
129
129
  # vehicle.ignite # => false
130
130
  # Message.count # => 0
131
- #
131
+ #
132
132
  # *Note* that only before callbacks that halt the callback chain and
133
133
  # failed attempts to save the record will result in the transaction being
134
134
  # rolled back. If an after callback halts the chain, the previous result
135
135
  # still applies and the transaction is *not* rolled back.
136
- #
136
+ #
137
137
  # To turn off transactions:
138
- #
138
+ #
139
139
  # class Vehicle < ActiveRecord::Base
140
140
  # state_machine :initial => :parked, :use_transactions => false do
141
141
  # ...
142
142
  # end
143
143
  # end
144
- #
144
+ #
145
145
  # == Validations
146
- #
146
+ #
147
147
  # As mentioned in StateMachines::Machine#state, you can define behaviors,
148
148
  # like validations, that only execute for certain states. One *important*
149
149
  # caveat here is that, due to a constraint in ActiveRecord's validation
150
150
  # framework, custom validators will not work as expected when defined to run
151
151
  # in multiple states. For example:
152
- #
152
+ #
153
153
  # class Vehicle < ActiveRecord::Base
154
154
  # state_machine do
155
155
  # ...
@@ -158,11 +158,11 @@ module StateMachines
158
158
  # end
159
159
  # end
160
160
  # end
161
- #
161
+ #
162
162
  # In this case, the <tt>:speed_is_legal</tt> validation will only get run
163
163
  # for the <tt>:second_gear</tt> state. To avoid this, you can define your
164
164
  # custom validation like so:
165
- #
165
+ #
166
166
  # class Vehicle < ActiveRecord::Base
167
167
  # state_machine do
168
168
  # ...
@@ -171,124 +171,124 @@ module StateMachines
171
171
  # end
172
172
  # end
173
173
  # end
174
- #
174
+ #
175
175
  # == Validation errors
176
- #
176
+ #
177
177
  # If an event fails to successfully fire because there are no matching
178
178
  # transitions for the current record, a validation error is added to the
179
179
  # record's state attribute to help in determining why it failed and for
180
180
  # reporting via the UI.
181
- #
181
+ #
182
182
  # For example,
183
- #
183
+ #
184
184
  # vehicle = Vehicle.create(:state => 'idling') # => #<Vehicle id: 1, name: nil, state: "idling">
185
185
  # vehicle.ignite # => false
186
186
  # vehicle.errors.full_messages # => ["State cannot transition via \"ignite\""]
187
- #
187
+ #
188
188
  # If an event fails to fire because of a validation error on the record and
189
189
  # *not* because a matching transition was not available, no error messages
190
190
  # will be added to the state attribute.
191
- #
191
+ #
192
192
  # In addition, if you're using the <tt>ignite!</tt> version of the event,
193
193
  # then the failure reason (such as the current validation errors) will be
194
194
  # included in the exception that gets raised when the event fails. For
195
195
  # example, assuming there's a validation on a field called +name+ on the class:
196
- #
196
+ #
197
197
  # vehicle = Vehicle.new
198
198
  # vehicle.ignite! # => StateMachines::InvalidTransition: Cannot transition state via :ignite from :parked (Reason(s): Name cannot be blank)
199
- #
199
+ #
200
200
  # == Scopes
201
- #
201
+ #
202
202
  # To assist in filtering models with specific states, a series of named
203
203
  # scopes are defined on the model for finding records with or without a
204
204
  # particular set of states.
205
- #
205
+ #
206
206
  # These named scopes are essentially the functional equivalent of the
207
207
  # following definitions:
208
- #
208
+ #
209
209
  # class Vehicle < ActiveRecord::Base
210
210
  # named_scope :with_states, lambda {|*states| {:conditions => {:state => states}}}
211
211
  # # with_states also aliased to with_state
212
- #
212
+ #
213
213
  # named_scope :without_states, lambda {|*states| {:conditions => ['state NOT IN (?)', states]}}
214
214
  # # without_states also aliased to without_state
215
215
  # end
216
- #
216
+ #
217
217
  # *Note*, however, that the states are converted to their stored values
218
218
  # before being passed into the query.
219
- #
219
+ #
220
220
  # Because of the way named scopes work in ActiveRecord, they can be
221
221
  # chained like so:
222
- #
222
+ #
223
223
  # Vehicle.with_state(:parked).all(:order => 'id DESC')
224
- #
224
+ #
225
225
  # Note that states can also be referenced by the string version of their
226
226
  # name:
227
- #
227
+ #
228
228
  # Vehicle.with_state('parked')
229
- #
229
+ #
230
230
  # == Callbacks
231
- #
231
+ #
232
232
  # All before/after transition callbacks defined for ActiveRecord models
233
233
  # behave in the same way that other ActiveRecord callbacks behave. The
234
234
  # object involved in the transition is passed in as an argument.
235
- #
235
+ #
236
236
  # For example,
237
- #
237
+ #
238
238
  # class Vehicle < ActiveRecord::Base
239
239
  # state_machine :initial => :parked do
240
240
  # before_transition any => :idling do |vehicle|
241
241
  # vehicle.put_on_seatbelt
242
242
  # end
243
- #
243
+ #
244
244
  # before_transition do |vehicle, transition|
245
245
  # # log message
246
246
  # end
247
- #
247
+ #
248
248
  # event :ignite do
249
249
  # transition :parked => :idling
250
250
  # end
251
251
  # end
252
- #
252
+ #
253
253
  # def put_on_seatbelt
254
254
  # ...
255
255
  # end
256
256
  # end
257
- #
257
+ #
258
258
  # Note, also, that the transition can be accessed by simply defining
259
259
  # additional arguments in the callback block.
260
- #
260
+ #
261
261
  # === Failure callbacks
262
- #
262
+ #
263
263
  # +after_failure+ callbacks allow you to execute behaviors when a transition
264
264
  # is allowed, but fails to save. This could be useful for something like
265
265
  # auditing transition attempts. Since callbacks run within transactions in
266
266
  # ActiveRecord, a save failure will cause any records that get created in
267
267
  # your callback to roll back. You can work around this issue like so:
268
- #
268
+ #
269
269
  # class TransitionLog < ActiveRecord::Base
270
270
  # establish_connection Rails.env.to_sym
271
271
  # end
272
- #
272
+ #
273
273
  # class Vehicle < ActiveRecord::Base
274
274
  # state_machine do
275
275
  # after_failure do |vehicle, transition|
276
276
  # TransitionLog.create(:vehicle => vehicle, :transition => transition)
277
277
  # end
278
- #
278
+ #
279
279
  # ...
280
280
  # end
281
281
  # end
282
- #
282
+ #
283
283
  # The +TransitionLog+ model establishes a second connection to the database
284
284
  # that allows new records to be saved without being affected by rollbacks
285
285
  # in the +Vehicle+ model's transaction.
286
- #
286
+ #
287
287
  # === Callback Order
288
- #
288
+ #
289
289
  # Callbacks occur in the following order. Callbacks specific to state_machine
290
290
  # are bolded. The remaining callbacks are part of ActiveRecord.
291
- #
291
+ #
292
292
  # * (-) save
293
293
  # * (-) begin transaction (if enabled)
294
294
  # * (1) *before_transition*
@@ -304,9 +304,9 @@ module StateMachines
304
304
  # * (8) *after_transition*
305
305
  # * (-) end transaction (if enabled)
306
306
  # * (9) after_commit
307
- #
307
+ #
308
308
  # == Observers
309
- #
309
+ #
310
310
  # In addition to support for ActiveRecord-like hooks, there is additional
311
311
  # support for ActiveRecord observers. Because of the way ActiveRecord
312
312
  # observers are designed, there is less flexibility around the specific
@@ -323,49 +323,49 @@ module StateMachines
323
323
  # * before/after/after_failure_to-_transition_state_to_idling
324
324
  # * before/after/after_failure_to-_transition_state
325
325
  # * before/after/after_failure_to-_transition
326
- #
326
+ #
327
327
  # The following class shows an example of some of these hooks:
328
- #
328
+ #
329
329
  # class VehicleObserver < ActiveRecord::Observer
330
330
  # def before_save(vehicle)
331
331
  # # log message
332
332
  # end
333
- #
333
+ #
334
334
  # # Callback for :ignite event *before* the transition is performed
335
335
  # def before_ignite(vehicle, transition)
336
336
  # # log message
337
337
  # end
338
- #
338
+ #
339
339
  # # Callback for :ignite event *after* the transition has been performed
340
340
  # def after_ignite(vehicle, transition)
341
341
  # # put on seatbelt
342
342
  # end
343
- #
343
+ #
344
344
  # # Generic transition callback *before* the transition is performed
345
345
  # def after_transition(vehicle, transition)
346
346
  # Audit.log(vehicle, transition)
347
347
  # end
348
348
  # end
349
- #
349
+ #
350
350
  # More flexible transition callbacks can be defined directly within the
351
351
  # model as described in StateMachines::Machine#before_transition
352
352
  # and StateMachines::Machine#after_transition.
353
- #
353
+ #
354
354
  # To define a single observer for multiple state machines:
355
- #
355
+ #
356
356
  # class StateMachineObserver < ActiveRecord::Observer
357
357
  # observe Vehicle, Switch, Project
358
- #
358
+ #
359
359
  # def after_transition(record, transition)
360
360
  # Audit.log(record, transition)
361
361
  # end
362
362
  # end
363
- #
363
+ #
364
364
  # == Internationalization
365
- #
365
+ #
366
366
  # In Rails 2.2+, any error message that is generated from performing invalid
367
367
  # transitions can be localized. The following default translations are used:
368
- #
368
+ #
369
369
  # en:
370
370
  # activerecord:
371
371
  # errors:
@@ -375,19 +375,19 @@ module StateMachines
375
375
  # invalid_event: "cannot transition when %{state}"
376
376
  # # %{value} = attribute value, %{event} = Human event name, %{state} = Human current state name
377
377
  # invalid_transition: "cannot transition via %{event}"
378
- #
378
+ #
379
379
  # Notice that the interpolation syntax is %{key} in Rails 3+. In Rails 2.x,
380
380
  # the appropriate syntax is {{key}}.
381
- #
381
+ #
382
382
  # You can override these for a specific model like so:
383
- #
383
+ #
384
384
  # en:
385
385
  # activerecord:
386
386
  # errors:
387
387
  # models:
388
388
  # user:
389
389
  # invalid: "is not valid"
390
- #
390
+ #
391
391
  # In addition to the above, you can also provide translations for the
392
392
  # various states / events in each state machine. Using the Vehicle example,
393
393
  # state translations will be looked for using the following keys, where
@@ -396,16 +396,16 @@ module StateMachines
396
396
  # * <tt>activerecord.state_machines.#{model_name}.states.#{state_name}</tt>
397
397
  # * <tt>activerecord.state_machines.#{machine_name}.states.#{state_name}</tt>
398
398
  # * <tt>activerecord.state_machines.states.#{state_name}</tt>
399
- #
399
+ #
400
400
  # Event translations will be looked for using the following keys, where
401
401
  # +model_name+ = "vehicle", +machine_name+ = "state" and +event_name+ = "ignite":
402
402
  # * <tt>activerecord.state_machines.#{model_name}.#{machine_name}.events.#{event_name}</tt>
403
403
  # * <tt>activerecord.state_machines.#{model_name}.events.#{event_name}</tt>
404
404
  # * <tt>activerecord.state_machines.#{machine_name}.events.#{event_name}</tt>
405
405
  # * <tt>activerecord.state_machines.events.#{event_name}</tt>
406
- #
406
+ #
407
407
  # An example translation configuration might look like so:
408
- #
408
+ #
409
409
  # es:
410
410
  # activerecord:
411
411
  # state_machines:
@@ -448,7 +448,16 @@ module StateMachines
448
448
  end
449
449
 
450
450
  def define_state_initializer
451
- if ::ActiveRecord.gem_version >= Gem::Version.new('4.2')
451
+ if ::ActiveRecord.gem_version >= Gem::Version.new('5.0.0.alpha')
452
+ define_helper :instance, <<-end_eval, __FILE__, __LINE__ + 1
453
+ def initialize(attributes = nil)
454
+ super(attributes) do |*args|
455
+ self.class.state_machines.initialize_states(self, {}, attributes || {})
456
+ yield(*args) if block_given?
457
+ end
458
+ end
459
+ end_eval
460
+ elsif ::ActiveRecord.gem_version >= Gem::Version.new('4.2')
452
461
  define_helper :instance, <<-end_eval, __FILE__, __LINE__ + 1
453
462
  def initialize(attributes = nil, options = {})
454
463
  super(attributes, options) do |*args|
@@ -491,12 +500,12 @@ module StateMachines
491
500
  def save(*)
492
501
  self.class.state_machine(#{name.inspect}).send(:around_save, self) { super }
493
502
  end
494
-
503
+
495
504
  def save!(*)
496
505
  result = self.class.state_machine(#{name.inspect}).send(:around_save, self) { super }
497
506
  result || raise(ActiveRecord::RecordInvalid.new(self))
498
507
  end
499
-
508
+
500
509
  def changed_for_autosave?
501
510
  super || self.class.state_machines.any? {|name, machine| machine.action == :save && machine.read(self, :event)}
502
511
  end
@@ -1,7 +1,7 @@
1
1
  module StateMachines
2
2
  module Integrations
3
3
  module ActiveRecord
4
- VERSION = '0.3.0'
4
+ VERSION = '0.4.0.pre'
5
5
  end
6
6
  end
7
7
  end
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
10
10
  spec.email = %w(terminale@gmail.com aaron@pluginaweek.org)
11
11
  spec.summary = %q(State machines Active Record Integration)
12
12
  spec.description = %q(Adds support for creating state machines for attributes on ActiveRecord)
13
- spec.homepage = 'https://github.com/seuros/state_machines-activerecord'
13
+ spec.homepage = 'https://github.com/state-machines/state_machines-activerecord/'
14
14
  spec.license = 'MIT'
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0")
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.require_paths = ['lib']
19
19
 
20
20
  spec.add_dependency 'state_machines-activemodel', '>= 0.3.0'
21
- spec.add_dependency 'activerecord' , '~> 4.1'
21
+ spec.add_dependency 'activerecord' , '>=4.1', '<5.0'
22
22
  spec.add_development_dependency 'rake', '~> 10.3'
23
23
  spec.add_development_dependency 'sqlite3', '~> 1.3'
24
24
  spec.add_development_dependency 'appraisal', '>= 1'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: state_machines-activerecord
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abdelkader Boudih
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-07-13 00:00:00.000000000 Z
12
+ date: 2015-12-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: state_machines-activemodel
@@ -29,16 +29,22 @@ dependencies:
29
29
  name: activerecord
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "~>"
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: '4.1'
35
+ - - "<"
36
+ - !ruby/object:Gem::Version
37
+ version: '5.0'
35
38
  type: :runtime
36
39
  prerelease: false
37
40
  version_requirements: !ruby/object:Gem::Requirement
38
41
  requirements:
39
- - - "~>"
42
+ - - ">="
40
43
  - !ruby/object:Gem::Version
41
44
  version: '4.1'
45
+ - - "<"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.0'
42
48
  - !ruby/object:Gem::Dependency
43
49
  name: rake
44
50
  requirement: !ruby/object:Gem::Requirement
@@ -126,6 +132,7 @@ files:
126
132
  - Rakefile
127
133
  - gemfiles/active_record_4.1.gemfile
128
134
  - gemfiles/active_record_4.2.gemfile
135
+ - gemfiles/active_record_edge.gemfile
129
136
  - lib/state_machines-activerecord.rb
130
137
  - lib/state_machines/integrations/active_record.rb
131
138
  - lib/state_machines/integrations/active_record/locale.rb
@@ -183,7 +190,7 @@ files:
183
190
  - test/machine_without_transactions_test.rb
184
191
  - test/model_test.rb
185
192
  - test/test_helper.rb
186
- homepage: https://github.com/seuros/state_machines-activerecord
193
+ homepage: https://github.com/state-machines/state_machines-activerecord/
187
194
  licenses:
188
195
  - MIT
189
196
  metadata: {}
@@ -198,12 +205,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
198
205
  version: '0'
199
206
  required_rubygems_version: !ruby/object:Gem::Requirement
200
207
  requirements:
201
- - - ">="
208
+ - - ">"
202
209
  - !ruby/object:Gem::Version
203
- version: '0'
210
+ version: 1.3.1
204
211
  requirements: []
205
212
  rubyforge_project:
206
- rubygems_version: 2.4.7
213
+ rubygems_version: 2.4.8
207
214
  signing_key:
208
215
  specification_version: 4
209
216
  summary: State machines Active Record Integration
@@ -259,3 +266,4 @@ test_files:
259
266
  - test/machine_without_transactions_test.rb
260
267
  - test/model_test.rb
261
268
  - test/test_helper.rb
269
+ has_rdoc: