power_enum 2.0.0.rc → 2.0.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 +8 -8
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/LICENSE +1 -1
- data/README.markdown +18 -20
- metadata +5 -5
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YjczOWI2OTAxNmMxMmVmY2Q1ZjI5ZjAyZTFhMmUyNjllNDc2NzVlMw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZjNlM2IxMjNlZjBmZGE0YjZlMTA3ZDZjZWM3NzYzNjdlMTY5MGFkMg==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
OWJiOWExODIxNWU4MDVmYTA3NTRiMmE0NjlmMTRiMGNlMmE3Y2QzMWNhMTFj
|
10
|
+
OGM1N2RkNWMxNzdlMDY5M2ExOGFjYzJhNzkzMDMxMGU3ODUyODNmYTJhZjkz
|
11
|
+
MTdiNDZlZWE1YjQ5NmFiOTNlZWYwZWJlZjg0NTNlY2ViNzNhNzc=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NGE0MGYzM2RmMTQyNTU1OTBkZjlhOGFjMDRjZTczYjQ1ZGJlY2QxMWUzOGY1
|
14
|
+
NTNmNjViMzk4YmFlZDMxNDFkYjZmODAxNWM2ZTUzNzlmYmUwNDA4YjQyOWY0
|
15
|
+
YmNmZWEwMzM0ZDhhNzI3YjFiNzM2M2QxNWE3NmY0MTlmZWRiNGM=
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data.tar.gz.sig
CHANGED
Binary file
|
data/LICENSE
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Initial Version Copyright (c) 2005 Trevor Squires
|
2
2
|
Rails 3 Updates Copyright (c) 2010 Pivotal Labs
|
3
3
|
Initial Test Suite Copyright (c) 2011 Sergey Potapov
|
4
|
-
Subsequent Updates Copyright (c) 2011 Arthur Shagall
|
4
|
+
Subsequent Updates Copyright (c) 2011-2013 Arthur Shagall
|
5
5
|
|
6
6
|
Permission is hereby granted, free of charge, to any person obtaining
|
7
7
|
a copy of this software and associated documentation files (the
|
data/README.markdown
CHANGED
@@ -290,8 +290,7 @@ class BookingStatus < ActiveRecord::Base
|
|
290
290
|
:on_lookup_failure => :optional_class_method, #This also works: lambda{ |arg| some_custom_action }
|
291
291
|
:name_column => 'optional_name_column' #If required, may override the default name column
|
292
292
|
:alias_name => false #If set to false and have name_column set, will not
|
293
|
-
# alias :name to the name column attribute
|
294
|
-
# (version 0.9.0).
|
293
|
+
# alias :name to the name column attribute.
|
295
294
|
end
|
296
295
|
```
|
297
296
|
|
@@ -303,8 +302,8 @@ With that, your BookingStatus class will have the following methods defined:
|
|
303
302
|
|
304
303
|
`BookingStatus[arg]` performs a lookup for the BookingStatus instance for the given arg. The arg value can be a
|
305
304
|
'string' or a :symbol, in which case the lookup will be against the BookingStatus.name field. Alternatively arg can be
|
306
|
-
a Fixnum, in which case the lookup will be against the BookingStatus.id field.
|
307
|
-
|
305
|
+
a Fixnum, in which case the lookup will be against the BookingStatus.id field. It returns the arg if arg is an
|
306
|
+
instance of the enum (in this case BookingStatus) as a convenience.
|
308
307
|
|
309
308
|
The `:on_lookup_failure` option specifies the name of a *class* method to invoke when the `[]` method is unable to
|
310
309
|
locate a BookingStatus record for arg. The default is the built-in `:enforce_none` which returns nil. There are also
|
@@ -313,14 +312,14 @@ an exception if the arg is a Fixnum or Symbol), `:enforce_strict_ids` (raises an
|
|
313
312
|
`:enforce_strict_symbols` (raises an exception if the arg is a Symbol).
|
314
313
|
|
315
314
|
The purpose of the `:on_lookup_failure` option is that a) under some circumstances a lookup failure is a Bad Thing and
|
316
|
-
action should be taken, therefore b) a fallback action should be easily configurable.
|
315
|
+
action should be taken, therefore b) a fallback action should be easily configurable. You can
|
317
316
|
also set `:on_lookup_failure` to a lambda that takes in a single argument (The arg that was passed to `[]`).
|
318
317
|
|
319
|
-
|
318
|
+
You can also pass in multiple arguments to `[]`. This returns a list of enums corresponding to the
|
320
319
|
passed in values. Duplicates are filtered out. For example `BookingStatus[arg1, arg2, arg3]` would be equivalent to
|
321
320
|
`[BookingStatus[arg1], BookingStatus[arg2], BookingStatus[arg3]]`.
|
322
321
|
|
323
|
-
##### contains?(arg)
|
322
|
+
##### contains?(arg)
|
324
323
|
|
325
324
|
`BookingStatus.contains?(arg)` returns `true if` the given Symbol, String or id has a member instance in the enumeration,
|
326
325
|
`false` otherwise. Returns `true` if the argument is an enum instance, returns `false` if the argument is `nil` or any
|
@@ -341,11 +340,11 @@ method.
|
|
341
340
|
`BookingStatus.inactive` returns an array of all BookingStatus records that are inactive. See the `inactive?` instance
|
342
341
|
method.
|
343
342
|
|
344
|
-
##### names
|
343
|
+
##### names
|
345
344
|
|
346
345
|
`BookingStatus.names` will return all the names of the defined enums as an array of symbols.
|
347
346
|
|
348
|
-
##### update\_enumerations\_model
|
347
|
+
##### update\_enumerations\_model
|
349
348
|
|
350
349
|
The preferred mechanism to update an enumerations model in migrations and similar. Pass in a block to this method to
|
351
350
|
to perform any updates.
|
@@ -360,7 +359,7 @@ BookingStatus.update_enumerations_model do
|
|
360
359
|
end
|
361
360
|
```
|
362
361
|
|
363
|
-
Example 2
|
362
|
+
Example 2:
|
364
363
|
|
365
364
|
```ruby
|
366
365
|
BookingStatus.update_enumerations_model do |klass|
|
@@ -370,7 +369,7 @@ BookingStatus.update_enumerations_model do |klass|
|
|
370
369
|
end
|
371
370
|
```
|
372
371
|
|
373
|
-
##### acts\_as\_enumerated?
|
372
|
+
##### acts\_as\_enumerated?
|
374
373
|
|
375
374
|
Returns `true` for ActiveRecord models that act as enumerated, `false` for others. So
|
376
375
|
`BookingStatus.acts_as_enumerated?` would return `true`, while `Booking.acts_as_enumerated?` would return `false`.
|
@@ -430,7 +429,7 @@ Returns the symbol representation of the name of the enum. `BookingStatus[:foo].
|
|
430
429
|
|
431
430
|
##### to\_sym
|
432
431
|
|
433
|
-
Aliased to `name_sym
|
432
|
+
Aliased to `name_sym`.
|
434
433
|
|
435
434
|
##### active?
|
436
435
|
|
@@ -447,8 +446,7 @@ This method is used by the `inactive` class method to select inactive enums.
|
|
447
446
|
|
448
447
|
`acts_as_enumerated` records are considered immutable. By default you cannot create/alter/destroy instances because they
|
449
448
|
are cached in memory. Because of Rails' process-based model it is not safe to allow updating acts\_as\_enumerated
|
450
|
-
records as the caches will get out of sync. Also,
|
451
|
-
enum instance.
|
449
|
+
records as the caches will get out of sync. Also, `to_s` is overriden to return the name of the enum instance.
|
452
450
|
|
453
451
|
However, one instance where updating the models *should* be allowed is if you are using seeds.rb to seed initial values
|
454
452
|
into the database.
|
@@ -542,7 +540,7 @@ raise an exception, while in the case of a `:write` you don't have to return any
|
|
542
540
|
Note that there's enough information in the method signature that you can specify one method to handle all lookup
|
543
541
|
failures for all has\_enumerated fields if you happen to have more than one defined in your model.
|
544
542
|
|
545
|
-
3)
|
543
|
+
3) Give it a lambda function. In that case, the lambda needs to accept the ActiveRecord model as
|
546
544
|
its first argument, with the rest of the arguments being identical to the signature of the lookup handler instance
|
547
545
|
method.
|
548
546
|
|
@@ -571,11 +569,11 @@ recommended for obvious reasons.
|
|
571
569
|
Booking.with_status 1, 'confirmed', BookingStatus[:rejected]
|
572
570
|
```
|
573
571
|
|
574
|
-
As
|
572
|
+
As a convenience, it also aliases a pluralized version of the scope, i.e. `:with_statuses`
|
575
573
|
|
576
574
|
#### exclude\_enumerated\_attribute scope
|
577
575
|
|
578
|
-
|
576
|
+
By default, a scope for the inverse of `with_enumerated_attribute` is created, unless the `:create_scope`
|
579
577
|
option is set to `false`. As a result, this allows us to do things like
|
580
578
|
|
581
579
|
```ruby
|
@@ -608,7 +606,7 @@ you can use ActiveRecord::VirtualEnumerations to reduce that clutter.
|
|
608
606
|
|
609
607
|
Create a custom Rails initializer: Rails.root/config/initializers/virtual\_enumerations.rb
|
610
608
|
|
611
|
-
|
609
|
+
To streamline this, a generator is provided:
|
612
610
|
|
613
611
|
```bash
|
614
612
|
rails generate virtual_enumerations_initializer
|
@@ -679,7 +677,7 @@ config.define :base_enum, :name_column => ;foo
|
|
679
677
|
config.define :booking_status, :connector_type, :color, :extends => :base_enum
|
680
678
|
```
|
681
679
|
|
682
|
-
### Testing
|
680
|
+
### Testing
|
683
681
|
|
684
682
|
A pair of custom RSpec matchers are included to streamline testing of enums and enumerated attributes.
|
685
683
|
|
@@ -748,7 +746,7 @@ describe Booking do
|
|
748
746
|
end
|
749
747
|
```
|
750
748
|
|
751
|
-
#### match\_enum
|
749
|
+
#### match\_enum
|
752
750
|
|
753
751
|
Tests if an enum instance matches the given value, which may be a symbol, id, string, or enum instance:
|
754
752
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: power_enum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Trevor Squires
|
@@ -39,7 +39,7 @@ cert_chain:
|
|
39
39
|
amZaYUtWM2wwYTFkR2wyUVNMa2pScFFaRDFiRCtVSDdnT3F5N1piZGNzUkJM
|
40
40
|
NEg3VTV6VQpibEtkZEg2dXhDckRTTTdLYWJrelNPVmYKLS0tLS1FTkQgQ0VS
|
41
41
|
VElGSUNBVEUtLS0tLQo=
|
42
|
-
date: 2013-
|
42
|
+
date: 2013-07-04 00:00:00.000000000 Z
|
43
43
|
dependencies:
|
44
44
|
- !ruby/object:Gem::Dependency
|
45
45
|
name: rails
|
@@ -162,7 +162,7 @@ files:
|
|
162
162
|
- lib/testing/rspec.rb
|
163
163
|
- LICENSE
|
164
164
|
- README.markdown
|
165
|
-
homepage: http://github.com/albertosaurus/
|
165
|
+
homepage: http://github.com/albertosaurus/power_enum_2
|
166
166
|
licenses: []
|
167
167
|
metadata: {}
|
168
168
|
post_install_message:
|
@@ -176,9 +176,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
176
176
|
version: '0'
|
177
177
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
178
178
|
requirements:
|
179
|
-
- - ! '
|
179
|
+
- - ! '>='
|
180
180
|
- !ruby/object:Gem::Version
|
181
|
-
version:
|
181
|
+
version: '0'
|
182
182
|
requirements: []
|
183
183
|
rubyforge_project:
|
184
184
|
rubygems_version: 2.0.3
|
metadata.gz.sig
CHANGED
Binary file
|