power_enum 0.5.4 → 0.5.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Power Enum
2
2
 
3
+ https://github.com/albertosaurus/enumerations\_mixin
4
+
3
5
  Enumerations for Rails 3.X Done Right.
4
6
 
5
7
  ## What is this?:
@@ -9,20 +11,24 @@ It allows you to cleanly solve many of the problems that the traditional Rails a
9
11
  It is particularly suitable for scenarios where your Rails application is not the only user of the database, such as
10
12
  when it's used for analytics or reporting.
11
13
 
12
- Power Enum is built on top of the Rails 3 modernization made by the fine folks at Protocool https://github.com/protocool/enumerations\_mixin
13
- to the original plugin by Trevor Squires located at https://github.com/protocool/enumerations\_mixin. While many of the core ideas remain,
14
- it has been reworked and a full test suite written to facilitate further development.
14
+ Power Enum is a fork of the Rails 3 modernization made by the fine folks at Protocool
15
+ https://github.com/protocool/enumerations\_mixin to the original plugin by Trevor Squires located at
16
+ https://github.com/protocool/enumerations\_mixin. While many of the core ideas remain, it has been reworked and a full
17
+ test suite written to facilitate further development.
15
18
 
16
19
  At it's most basic level, it allows you to say things along the lines of:
17
20
 
18
21
  booking = Booking.new(:status => BookingStatus[:provisional])
19
22
  booking.status = :confirmed
23
+ booking = Booking.create( :status => :rejected )
20
24
 
21
25
  Booking.find :first,
22
26
  :conditions => ['status_id = ?', BookingStatus[:provisional].id]
23
27
 
24
28
  BookingStatus.all.collect {|status|, [status.name, status.id]}
25
29
 
30
+ Booking.with_status :provisional, :confirmed
31
+
26
32
  See "How to use it" below for more information.
27
33
 
28
34
  ## Installation
@@ -50,10 +56,11 @@ are cached in memory. If the table has an 'active' column, the value of that at
50
56
  will be used to determine which enum instances are active.
51
57
  Otherwise, all values are considered active.
52
58
 
53
- `has_enumerated` adds methods to your ActiveRecord model for setting and retrieving enumerated values using an associated acts\_as\_enumerated model.
59
+ `has_enumerated` adds methods to your ActiveRecord model for setting and retrieving enumerated values using an
60
+ associated acts\_as\_enumerated model.
54
61
 
55
- There is also an `ActiveRecord::VirtualEnumerations` helper module to create 'virtual' acts\_as\_enumerated models which helps to avoid
56
- cluttering up your models directory with acts\_as\_enumerated classes.
62
+ There is also an `ActiveRecord::VirtualEnumerations` helper module to create 'virtual' acts\_as\_enumerated models
63
+ which helps to avoid cluttering up your models directory with acts\_as\_enumerated classes.
57
64
 
58
65
  ## How to use it
59
66
 
@@ -79,7 +86,7 @@ from a pre-test Rake task.
79
86
 
80
87
  ### migration
81
88
 
82
- If you're using Rails prior to 3.1, your migration file will look something like this:
89
+ If you're using Rails prior to 3.0, your migration file will look something like this:
83
90
 
84
91
  class CreateEnumBookingStatus < ActiveRecord::Migration
85
92
 
@@ -133,7 +140,7 @@ It's easier to use the `references` method if you intend to stick to the default
133
140
 
134
141
  There are two methods added to Rails migrations:
135
142
 
136
- ##### create_enum(enum\_name, options = {}, &block)
143
+ ##### create\_enum(enum\_name, options = {}, &block)
137
144
 
138
145
  Creates a new enum table. `enum_name` will be automatically pluralized. The following options are supported:
139
146
 
@@ -208,7 +215,7 @@ is the equivalent of
208
215
 
209
216
  class BookingStatus < ActiveRecord::Base
210
217
  acts_as_enumerated :conditions => 'optional_sql_conditions',
211
- :order => 'optional_sql_orderby',
218
+ :order => 'optional_sql_order_by',
212
219
  :on_lookup_failure => :optional_class_method,
213
220
  :name_column => 'optional_name_column' #If required, may override the default name column
214
221
  end
@@ -219,30 +226,35 @@ With that, your BookingStatus class will have the following methods defined:
219
226
 
220
227
  ##### [](arg)
221
228
 
222
- `BookingStatus[arg]` performs a lookup for the BookingStatus instance for the given arg. The arg value can be a 'string' or a :symbol,
223
- in which case the lookup will be against the BookingStatus.name field. Alternatively arg can be a Fixnum,
224
- in which case the lookup will be against the BookingStatus.id field. Since version 0.5.3, it returns the arg
229
+ `BookingStatus[arg]` performs a lookup for the BookingStatus instance for the given arg. The arg value can be a
230
+ 'string' or a :symbol, in which case the lookup will be against the BookingStatus.name field. Alternatively arg can be
231
+ a Fixnum, in which case the lookup will be against the BookingStatus.id field. Since version 0.5.3, it returns the arg
225
232
  if arg is an instance of the enum (in this case BookingStatus) as a convenience.
226
233
 
227
- The `:on_lookup_failure` option specifies the name of a *class* method to invoke when the `[]` method is unable to locate a BookingStatus record for arg.
228
- The default is the built-in `:enforce_none` which returns nil. There are also built-ins for `:enforce_strict` (raise and exception regardless of the type for arg),
229
- `:enforce_strict_literals` (raises an exception if the arg is a Fixnum or Symbol), `:enforce_strict_ids` (raises and exception if the arg is a Fixnum)
230
- and `:enforce_strict_symbols` (raises an exception if the arg is a Symbol).
234
+ The `:on_lookup_failure` option specifies the name of a *class* method to invoke when the `[]` method is unable to
235
+ locate a BookingStatus record for arg. The default is the built-in `:enforce_none` which returns nil. There are also
236
+ built-ins for `:enforce_strict` (raise and exception regardless of the type for arg), `:enforce_strict_literals` (raises
237
+ an exception if the arg is a Fixnum or Symbol), `:enforce_strict_ids` (raises and exception if the arg is a Fixnum) and
238
+ `:enforce_strict_symbols` (raises an exception if the arg is a Symbol).
231
239
 
232
- The purpose of the `:on_lookup_failure` option is that a) under some circumstances a lookup failure is a Bad Thing and action should be taken,
240
+ The purpose of the `:on_lookup_failure` option is that a) under some circumstances a lookup failure is a Bad Thing and
241
+ action should be taken,
233
242
  therefore b) a fallback action should be easily configurable.
234
243
 
235
244
  ##### all
236
245
 
237
- `BookingStatus.all` returns an array of all BookingStatus records that match the `:conditions` specified in `acts_as_enumerated`, in the order specified by `:order`.
246
+ `BookingStatus.all` returns an array of all BookingStatus records that match the `:conditions` specified in
247
+ `acts_as_enumerated`, in the order specified by `:order`.
238
248
 
239
249
  ##### active
240
250
 
241
- `BookingStatus.active` returns an array of all BookingStatus records that are marked active. See the `active?` instance method.
251
+ `BookingStatus.active` returns an array of all BookingStatus records that are marked active. See the `active?` instance
252
+ method.
242
253
 
243
254
  ##### inactive
244
255
 
245
- `BookingStatus.inactive` returns an array of all BookingStatus records that are inactive. See the `inactive?` instance method.
256
+ `BookingStatus.inactive` returns an array of all BookingStatus records that are inactive. See the `inactive?` instance
257
+ method.
246
258
 
247
259
  #### Instance Methods
248
260
 
@@ -265,7 +277,8 @@ Examples:
265
277
  BookingStatus[:foo] === [:foo, :bar, :baz] #Returns true
266
278
  BookingStatus[:foo] === nil #Returns false
267
279
 
268
- You should note that defining an `:on_lookup_failure` method that raises an exception will cause `===` to also raise an exception for any lookup failure of `BookingStatus[arg]`.
280
+ You should note that defining an `:on_lookup_failure` method that raises an exception will cause `===` to also raise an
281
+ exception for any lookup failure of `BookingStatus[arg]`.
269
282
 
270
283
  `like?` is aliased to `===`
271
284
 
@@ -298,11 +311,13 @@ This method is used by the `inactive` class method to select inactive enums.
298
311
 
299
312
  #### Notes
300
313
 
301
- `acts_as_enumerated` records are considered immutable. By default you cannot create/alter/destroy instances because they are cached in memory.
302
- Because of Rails' process-based model it is not safe to allow updating acts\_as\_enumerated records as the caches will get out of sync. Also,
303
- as of version 0.5.1, `to_s` is overriden to return the name of the enum instance.
314
+ `acts_as_enumerated` records are considered immutable. By default you cannot create/alter/destroy instances because they
315
+ are cached in memory. Because of Rails' process-based model it is not safe to allow updating acts\_as\_enumerated
316
+ records as the caches will get out of sync. Also, as of version 0.5.1, `to_s` is overriden to return the name of the
317
+ enum instance.
304
318
 
305
- However, one instance where updating the models *should* be allowed is if you are using seeds.rb to seed initial values into the database.
319
+ However, one instance where updating the models *should* be allowed is if you are using seeds.rb to seed initial values
320
+ into the database.
306
321
 
307
322
  Using the above example you would do the following:
308
323
 
@@ -315,9 +330,9 @@ Note that a `:presence` and `:uniqueness` validation is automatically defined on
315
330
 
316
331
  ### has\_enumerated
317
332
 
318
- First of all, note that you *could* specify the relationship to an `acts_as_enumerated` class using the belongs_to association.
319
- However, `has_enumerated` is preferable because you aren't really associated to the enumerated value, you are *aggregating* it. As such,
320
- the `has_enumerated` macro behaves more like an aggregation than an association.
333
+ First of all, note that you *could* specify the relationship to an `acts_as_enumerated` class using the `belongs_to`
334
+ association. However, `has_enumerated` is preferable because you aren't really associated to the enumerated value, you
335
+ are *aggregating* it. As such, the `has_enumerated` macro behaves more like an aggregation than an association.
321
336
 
322
337
  class Booking < ActiveRecord::Base
323
338
  has_enumerated :status, :class_name => 'BookingStatus',
@@ -328,24 +343,26 @@ the `has_enumerated` macro behaves more like an aggregation than an association.
328
343
  :create_scope => false #Setting this to false disables the automatic creation of the 'with_status' scope.
329
344
  end
330
345
 
331
- By default, the foreign key is interpreted to be the name of your has\_enumerated field (in this case 'booking_status') plus '\_id'. Since we
332
- chose to make the column name 'status\_id' for the sake of brevity, we must explicitly designate it. Additionally, the default value for
333
- `:class_name` is the camelized version of the name for your has\_enumerated field. `:on_lookup_failure` is explained below. `:permit_empty_name`
334
- is an optional flag to disable automatic conversion of empty strings to nil. It is typically desirable to have `booking.update_attributes(:status => '')`
335
- assign status_id to a nil rather than raise an Error, as you'll be often calling `update_attributes` with form data, but
336
- the choice is yours. Setting a `:default` option will generate an after_initialize callback to set a default value on the
337
- attribute unless a non-nil value has already been set.
346
+ By default, the foreign key is interpreted to be the name of your has\_enumerated field (in this case 'booking\_status')
347
+ plus '\_id'. Since we chose to make the column name 'status\_id' for the sake of brevity, we must explicitly designate
348
+ it. Additionally, the default value for `:class_name` is the camelized version of the name for your has\_enumerated
349
+ field. `:on_lookup_failure` is explained below. `:permit_empty_name` is an optional flag to disable automatic
350
+ conversion of empty strings to nil. It is typically desirable to have `booking.update_attributes(:status => '')`
351
+ assign status\_id to a nil rather than raise an Error, as you'll be often calling `update_attributes` with form data, but
352
+ the choice is yours. Setting a `:default` option will generate an after\_initialize callback to set a default value on
353
+ the attribute unless a non-nil value has already been set.
338
354
 
339
355
  With that, your Booking class will have the following methods defined:
340
356
 
341
357
  #### status
342
358
 
343
- Returns the BookingStatus with an id that matches the value in the Booking.status_id.
359
+ Returns the BookingStatus with an id that matches the value in the Booking.status\_id.
344
360
 
345
361
  #### status=(arg)
346
362
 
347
- Sets the value for Booking.status_id using the id of the BookingStatus instance passed as an argument. As a
348
- short-hand, you can also pass it the 'name' of a BookingStatus instance, either as a 'string' or :symbol, or pass in the id directly.
363
+ Sets the value for Booking.status\_id using the id of the BookingStatus instance passed as an argument. As a
364
+ short-hand, you can also pass it the 'name' of a BookingStatus instance, either as a 'string' or :symbol, or pass in the
365
+ id directly.
349
366
 
350
367
  example:
351
368
 
@@ -359,34 +376,38 @@ or:
359
376
 
360
377
  mybooking.status = BookingStatus[:confirmed]
361
378
 
362
- The `:on_lookup_failure` option in has_enumerated is there because you may want to create an error handler for situations
363
- where the argument passed to `status=(arg)` is invalid. By default, an invalid value will cause an ArgumentError to be raised.
379
+ The `:on_lookup_failure` option in has\_enumerated is there because you may want to create an error handler for
380
+ situations where the argument passed to `status=(arg)` is invalid. By default, an invalid value will cause an
381
+ ArgumentError to be raised.
364
382
 
365
- Of course, this may not be optimal in your situation. In this case you can specify an *instance* method to be called in the case of a lookup failure. The method signature is as follows:
383
+ Of course, this may not be optimal in your situation. In this case you can specify an *instance* method to be called in
384
+ the case of a lookup failure. The method signature is as follows:
366
385
 
367
386
  your_lookup_handler(operation, name, name_foreign_key, acts_enumerated_class_name, lookup_value)
368
387
 
369
- The 'operation' arg will be either `:read` or `:write`. In the case of `:read` you are expected to return something or raise an exception,
370
- while in the case of a `:write` you don't have to return anything.
388
+ The 'operation' arg will be either `:read` or `:write`. In the case of `:read` you are expected to return something or
389
+ raise an exception, while in the case of a `:write` you don't have to return anything.
371
390
 
372
- Note that there's enough information in the method signature that you can specify one method to handle all lookup failures
373
- for all has\_enumerated fields if you happen to have more than one defined in your model.
391
+ Note that there's enough information in the method signature that you can specify one method to handle all lookup
392
+ failures for all has\_enumerated fields if you happen to have more than one defined in your model.
374
393
 
375
- NOTE: A `nil` is always considered to be a valid value for `status=(arg)` since it's assumed you're trying to null out the foreign key.
376
- The `:on_lookup_failure` will be bypassed.
394
+ NOTE: A `nil` is always considered to be a valid value for `status=(arg)` since it's assumed you're trying to null out
395
+ the foreign key. The `:on_lookup_failure` will be bypassed.
377
396
 
378
397
  #### with\_enumerated\_attribute scope
379
398
 
380
- Unless the `:create\_scope` option is set to `false`, a scope is automatically created that takes a list of enums as arguments. This
381
- allows us to say things like:
399
+ Unless the `:create_scope` option is set to `false`, a scope is automatically created that takes a list of enums as
400
+ arguments. This allows us to say things like:
382
401
 
383
402
  Booking.with_status :confirmed, :received
384
403
 
385
- Strings, symbols, ids, or enum instances are all valid arguments. For example, the following would be valid, though not recommended
386
- for obvious reasons.
404
+ Strings, symbols, ids, or enum instances are all valid arguments. For example, the following would be valid, though not
405
+ recommended for obvious reasons.
387
406
 
388
407
  Booking.with_status 1, 'confirmed', BookingStatus[:rejected]
389
408
 
409
+ As of version 0.5.5, it also aliases a pluralized version of the scope, i.e. `:with_statuses`
410
+
390
411
  ### ActiveRecord::Base Extensions
391
412
 
392
413
  The following methods are added to ActiveRecord::Base as class methods.
@@ -404,9 +425,11 @@ Returns an array of attributes which are enumerated.
404
425
 
405
426
  In many instances, your `acts_as_enumerated` classes will do nothing more than just act as enumerated.
406
427
 
407
- In that case there isn't much point cluttering up your models directory with those class files. You can use ActiveRecord::VirtualEnumerations to reduce that clutter.
428
+ In that case there isn't much point cluttering up your models directory with those class files. You can use
429
+ ActiveRecord::VirtualEnumerations to reduce that clutter.
408
430
 
409
- Copy virtual\_enumerations\_sample.rb to Rails.root/config/initializers/virtual\_enumerations.rb and configure it accordingly.
431
+ Copy virtual\_enumerations\_sample.rb to Rails.root/config/initializers/virtual\_enumerations.rb and configure it
432
+ accordingly.
410
433
 
411
434
  See virtual\_enumerations\_sample.rb in the examples directory of this gem for a full description.
412
435
 
@@ -1,15 +1,56 @@
1
1
  # Copyright (c) 2005 Trevor Squires
2
+ # Copyright (c) 2012 Arthur Shagall
2
3
  # Released under the MIT License. See the LICENSE file for more details.
3
4
 
4
5
  module ActiveRecord
5
6
  module Acts
6
7
  module Enumerated
7
- def self.append_features(base)
8
- super
9
- base.extend(MacroMethods)
10
- end
8
+ extend ActiveSupport::Concern
11
9
 
12
- module MacroMethods
10
+ module ClassMethods
11
+
12
+ # Declares the model as enumerated. See the README for detailed usage instructions.
13
+ #
14
+ # === Supported options
15
+ # [:conditions]
16
+ # SQL search conditions
17
+ # [:order]
18
+ # SQL load order clause
19
+ # [:on_lookup_failure]
20
+ # Specifies the name of a class method to invoke when the +[]+ method is unable to locate a BookingStatus
21
+ # record for arg. The default is the built-in :enforce_none which returns nil. There are also built-ins for
22
+ # :enforce_strict (raise and exception regardless of the type for arg), :enforce_strict_literals (raises an
23
+ # exception if the arg is a Fixnum or Symbol), :enforce_strict_ids (raises and exception if the arg is a
24
+ # Fixnum) and :enforce_strict_symbols (raises an exception if the arg is a Symbol). The purpose of the
25
+ # :on_lookup_failure option is that a) under some circumstances a lookup failure is a Bad Thing and action
26
+ # should be taken, therefore b) a fallback action should be easily configurable.
27
+ # [:name_column]
28
+ # Override for the 'name' column. By default, assumed to be 'name'.
29
+ #
30
+ # === Examples
31
+ #
32
+ # ====Example 1
33
+ # class BookingStatus < ActiveRecord::Base
34
+ # acts_as_enumerated
35
+ # end
36
+ #
37
+ # ====Example 2
38
+ # class BookingStatus < ActiveRecord::Base
39
+ # acts_as_enumerated :on_lookup_failure => :enforce_strict
40
+ # end
41
+ #
42
+ # ====Example 3
43
+ # class BookingStatus < ActiveRecord::Base
44
+ # acts_as_enumerated :conditions => [:exclude => false],
45
+ # :order => 'created_at DESC',
46
+ # :on_lookup_failure => :lookup_failed,
47
+ # :name_column => :status_code
48
+ #
49
+ # def self.lookup_failed(arg)
50
+ # logger.error("Invalid status code lookup #{arg.inspect}")
51
+ # nil
52
+ # end
53
+ # end
13
54
  def acts_as_enumerated(options = {})
14
55
  valid_keys = [:conditions, :order, :on_lookup_failure, :name_column]
15
56
  options.assert_valid_keys(*valid_keys)
@@ -25,11 +66,11 @@ module ActiveRecord
25
66
  end
26
67
  write_inheritable_attribute(:acts_enumerated_name_column, name_column)
27
68
 
28
- unless self.is_a? ActiveRecord::Acts::Enumerated::ClassMethods
29
- extend ActiveRecord::Acts::Enumerated::ClassMethods
69
+ unless self.is_a? ActiveRecord::Acts::Enumerated::EnumClassMethods
70
+ extend ActiveRecord::Acts::Enumerated::EnumClassMethods
30
71
 
31
72
  class_eval do
32
- include ActiveRecord::Acts::Enumerated::InstanceMethods
73
+ include ActiveRecord::Acts::Enumerated::EnumInstanceMethods
33
74
 
34
75
  before_save :enumeration_model_update
35
76
  before_destroy :enumeration_model_update
@@ -43,7 +84,7 @@ module ActiveRecord
43
84
  end
44
85
  end
45
86
 
46
- module ClassMethods
87
+ module EnumClassMethods
47
88
  attr_accessor :enumeration_model_updates_permitted
48
89
 
49
90
  # Returns all the enum values. Caches results after the first time this method is run.
@@ -194,7 +235,7 @@ module ActiveRecord
194
235
 
195
236
  end
196
237
 
197
- module InstanceMethods
238
+ module EnumInstanceMethods
198
239
  # Behavior depends on the type of +arg+.
199
240
  #
200
241
  # * If +arg+ is +nil+, returns +false+.
@@ -1,23 +1,23 @@
1
1
  # Copyright (c) 2005 Trevor Squires
2
+ # Copyright (c) 2012 Arthur Shagall
2
3
  # Released under the MIT License. See the LICENSE file for more details.
3
4
 
4
5
  module ActiveRecord
5
6
  module Aggregations # :nodoc:
6
7
  module HasEnumerated # :nodoc:
7
8
 
8
- def self.append_features(base)
9
- super
10
- base.extend(MacroMethods)
11
- end
9
+ extend ActiveSupport::Concern
12
10
 
13
- module MacroMethods
11
+ module ClassMethods
14
12
 
13
+ # Returns a list of all the attributes on the ActiveRecord model which are enumerated.
15
14
  def enumerated_attributes
16
15
  @enumerated_attributes ||= []
17
16
  end
18
17
 
18
+ # Returns +true+ if +attribute+ is an enumerated attribute, +false+ otherwise.
19
19
  def has_enumerated?(attribute)
20
- return false unless attribute
20
+ return false if attribute.nil?
21
21
  enumerated_attributes.include? attribute.to_s
22
22
  end
23
23
 
@@ -26,7 +26,7 @@ module ActiveRecord
26
26
  #
27
27
  # === Supported options
28
28
  # [:class_name]
29
- # Name of the enum class. By default it is the camel-ized version of the has_enumerated attribute.
29
+ # Name of the enum class. By default it is the camelized version of the has_enumerated attribute.
30
30
  # [:foreign_key]
31
31
  # Explicitly set the foreign key column. By default it's assumed to be your_enumerated_attribute_name_id.
32
32
  # [:on_lookup_failure]
@@ -132,10 +132,20 @@ module ActiveRecord
132
132
  unless create_scope == false
133
133
  module_eval( <<-end_eval, __FILE__, __LINE__)
134
134
  scope :with_#{name}, lambda { |*args|
135
- ids = args.map{|arg| #{class_name}[arg] }
135
+ ids = args.map{ |arg|
136
+ n = #{class_name}[arg]
137
+ }
136
138
  where(:#{foreign_key} => ids)
137
139
  }
138
140
  end_eval
141
+
142
+ if (name_p = name.pluralize) != name
143
+ module_eval( <<-end_eval, __FILE__, __LINE__)
144
+ class << self
145
+ alias_method :with_#{name_p}, :with_#{name}
146
+ end
147
+ end_eval
148
+ end
139
149
  end
140
150
 
141
151
  end #has_enumerated
@@ -1,3 +1,6 @@
1
+ # Copyright (c) 2011 Arthur Shagall
2
+ # Released under the MIT license. See LICENSE for details.
3
+
1
4
  # Generator for PowerEnum
2
5
  class EnumGenerator < Rails::Generators::Base
3
6
  source_root File.expand_path('../templates', __FILE__)
@@ -1,3 +1,6 @@
1
+ # Copyright (c) 2011 Artem Kuzko
2
+ # Released under the MIT license. See LICENSE for details.
3
+
1
4
  module PowerEnum::Reflection
2
5
  extend ActiveSupport::Concern
3
6
 
metadata CHANGED
@@ -1,15 +1,10 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: power_enum
3
- version: !ruby/object:Gem::Version
4
- hash: 3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.5
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 5
9
- - 4
10
- version: 0.5.4
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - Trevor Squires
14
9
  - Pivotal Labs
15
10
  - Arthur Shagall
@@ -17,98 +12,82 @@ authors:
17
12
  autorequire:
18
13
  bindir: bin
19
14
  cert_chain: []
20
-
21
- date: 2012-01-29 00:00:00 Z
22
- dependencies:
23
- - !ruby/object:Gem::Dependency
24
- requirement: &id001 !ruby/object:Gem::Requirement
15
+ date: 2012-02-06 00:00:00.000000000Z
16
+ dependencies:
17
+ - !ruby/object:Gem::Dependency
18
+ name: rails
19
+ requirement: &15454380 !ruby/object:Gem::Requirement
25
20
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 7
30
- segments:
31
- - 3
32
- - 0
33
- - 0
21
+ requirements:
22
+ - - ! '>='
23
+ - !ruby/object:Gem::Version
34
24
  version: 3.0.0
35
- version_requirements: *id001
36
- name: rails
37
- prerelease: false
38
25
  type: :runtime
39
- - !ruby/object:Gem::Dependency
40
- requirement: &id002 !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- hash: 3
46
- segments:
47
- - 0
48
- version: "0"
49
- version_requirements: *id002
50
- name: jeweler
51
26
  prerelease: false
52
- type: :development
53
- - !ruby/object:Gem::Dependency
54
- requirement: &id003 !ruby/object:Gem::Requirement
27
+ version_requirements: *15454380
28
+ - !ruby/object:Gem::Dependency
29
+ name: jeweler
30
+ requirement: &15442580 !ruby/object:Gem::Requirement
55
31
  none: false
56
- requirements:
57
- - - ">="
58
- - !ruby/object:Gem::Version
59
- hash: 3
60
- segments:
61
- - 0
62
- version: "0"
63
- version_requirements: *id003
64
- name: rspec
65
- prerelease: false
32
+ requirements:
33
+ - - ! '>='
34
+ - !ruby/object:Gem::Version
35
+ version: '0'
66
36
  type: :development
67
- - !ruby/object:Gem::Dependency
68
- requirement: &id004 !ruby/object:Gem::Requirement
37
+ prerelease: false
38
+ version_requirements: *15442580
39
+ - !ruby/object:Gem::Dependency
40
+ name: rspec
41
+ requirement: &15440860 !ruby/object:Gem::Requirement
69
42
  none: false
70
- requirements:
71
- - - ">="
72
- - !ruby/object:Gem::Version
73
- hash: 3
74
- segments:
75
- - 0
76
- version: "0"
77
- version_requirements: *id004
78
- name: sqlite3
43
+ requirements:
44
+ - - ! '>='
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ type: :development
79
48
  prerelease: false
49
+ version_requirements: *15440860
50
+ - !ruby/object:Gem::Dependency
51
+ name: sqlite3
52
+ requirement: &15439280 !ruby/object:Gem::Requirement
53
+ none: false
54
+ requirements:
55
+ - - ! '>='
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
80
58
  type: :development
81
- - !ruby/object:Gem::Dependency
82
- requirement: &id005 !ruby/object:Gem::Requirement
59
+ prerelease: false
60
+ version_requirements: *15439280
61
+ - !ruby/object:Gem::Dependency
62
+ name: genspec
63
+ requirement: &15438200 !ruby/object:Gem::Requirement
83
64
  none: false
84
- requirements:
85
- - - "="
86
- - !ruby/object:Gem::Version
87
- hash: 21
88
- segments:
89
- - 0
90
- - 2
91
- - 1
65
+ requirements:
66
+ - - =
67
+ - !ruby/object:Gem::Version
92
68
  version: 0.2.1
93
- version_requirements: *id005
94
- name: genspec
95
- prerelease: false
96
69
  type: :development
97
- description: |
98
- Power Enum allows you to treat instances of your ActiveRecord models as though they were an enumeration of values.
99
- It allows you to cleanly solve many of the problems that the traditional Rails alternatives handle poorly if at all.
100
- It is particularly suitable for scenarios where your Rails application is not the only user of the database, such as
101
- when it's used for analytics or reporting.
70
+ prerelease: false
71
+ version_requirements: *15438200
72
+ description: ! 'Power Enum allows you to treat instances of your ActiveRecord models
73
+ as though they were an enumeration of values.
74
+
75
+ It allows you to cleanly solve many of the problems that the traditional Rails alternatives
76
+ handle poorly if at all.
77
+
78
+ It is particularly suitable for scenarios where your Rails application is not the
79
+ only user of the database, such as
80
+
81
+ when it''s used for analytics or reporting.
102
82
 
83
+ '
103
84
  email: arthur.shagall@gmail.com
104
85
  executables: []
105
-
106
86
  extensions: []
107
-
108
- extra_rdoc_files:
87
+ extra_rdoc_files:
109
88
  - LICENSE
110
89
  - README.md
111
- files:
90
+ files:
112
91
  - examples/virtual_enumerations_sample.rb
113
92
  - lib/active_record/acts/enumerated.rb
114
93
  - lib/active_record/aggregations/has_enumerated.rb
@@ -126,36 +105,30 @@ files:
126
105
  - README.md
127
106
  homepage: http://github.com/albertosaurus/enumerations_mixin
128
107
  licenses: []
129
-
130
108
  post_install_message:
131
109
  rdoc_options: []
132
-
133
- require_paths:
110
+ require_paths:
134
111
  - lib
135
- required_ruby_version: !ruby/object:Gem::Requirement
112
+ required_ruby_version: !ruby/object:Gem::Requirement
136
113
  none: false
137
- requirements:
138
- - - ">="
139
- - !ruby/object:Gem::Version
140
- hash: 3
141
- segments:
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ segments:
142
119
  - 0
143
- version: "0"
144
- required_rubygems_version: !ruby/object:Gem::Requirement
120
+ hash: -1905981418849188503
121
+ required_rubygems_version: !ruby/object:Gem::Requirement
145
122
  none: false
146
- requirements:
147
- - - ">="
148
- - !ruby/object:Gem::Version
149
- hash: 3
150
- segments:
151
- - 0
152
- version: "0"
123
+ requirements:
124
+ - - ! '>='
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
153
127
  requirements: []
154
-
155
128
  rubyforge_project:
156
129
  rubygems_version: 1.8.10
157
130
  signing_key:
158
131
  specification_version: 3
159
- summary: Allows you to treat instances of your ActiveRecord models as though they were an enumeration of values
132
+ summary: Allows you to treat instances of your ActiveRecord models as though they
133
+ were an enumeration of values
160
134
  test_files: []
161
-