enumerate_it 0.7.17 → 1.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.
- data/Gemfile.lock +1 -1
- data/README.rdoc +16 -7
- data/lib/enumerate_it.rb +13 -175
- data/lib/enumerate_it/base.rb +86 -0
- data/lib/enumerate_it/class_methods.rb +83 -0
- data/lib/enumerate_it/version.rb +1 -1
- data/spec/enumerate_it_spec.rb +5 -5
- metadata +6 -4
data/Gemfile.lock
CHANGED
data/README.rdoc
CHANGED
@@ -39,6 +39,15 @@ What does it mean when we say that someone or something is '2'?
|
|
39
39
|
|
40
40
|
Enter EnumerateIt.
|
41
41
|
|
42
|
+
== Documentation
|
43
|
+
|
44
|
+
http://rubydoc.info/gems/enumerate_it/1.0.0/frames
|
45
|
+
|
46
|
+
== About versions compatibility
|
47
|
+
|
48
|
+
Versions 1.x.x are NOT backwards compatible with 0.x.x versions. The biggest difference is that on 1.0.0 you need to `extend` the EnumerateIt
|
49
|
+
module inside classes that are going to have enumerated attributes, while in past versions you would use `include`.
|
50
|
+
|
42
51
|
== Creating enumerations
|
43
52
|
|
44
53
|
Enumerations are created as models, but you can put then anywhere in your application. In Rails
|
@@ -84,7 +93,7 @@ This will create some nice stuff:
|
|
84
93
|
|
85
94
|
RelationshipStatus.each_value { |value| # ... }
|
86
95
|
|
87
|
-
* You can iterate over the list of the enumeration's translations:
|
96
|
+
* You can iterate over the list of the enumeration's translations:
|
88
97
|
|
89
98
|
RelationshipStatus.each_translation { |translation| # ... }
|
90
99
|
|
@@ -119,7 +128,7 @@ The cool part is that you can use these enumerations with any class, be it an Ac
|
|
119
128
|
or not.
|
120
129
|
|
121
130
|
class Person
|
122
|
-
|
131
|
+
extend EnumerateIt
|
123
132
|
attr_accessor :relationship_status
|
124
133
|
|
125
134
|
has_enumeration_for :relationship_status, :with => RelationshipStatus
|
@@ -133,7 +142,7 @@ This will create:
|
|
133
142
|
|
134
143
|
p = Person.new
|
135
144
|
p.relationship_status = RelationshipStatus::DIVORCED
|
136
|
-
p.
|
145
|
+
p.relationship_status_humanize # => 'Divorced'
|
137
146
|
|
138
147
|
* If you don't supply a humanized string to represent an option, EnumerateIt will use a 'humanized' version of the hash's key to humanize the attribute's value:
|
139
148
|
|
@@ -163,7 +172,7 @@ This will create:
|
|
163
172
|
p.married? #=> true
|
164
173
|
p.divorced? #=> false
|
165
174
|
|
166
|
-
* It's also possible to "namespace" the created helper methods, passing a hash to the :create_helpers option.
|
175
|
+
* It's also possible to "namespace" the created helper methods, passing a hash to the :create_helpers option.
|
167
176
|
This can be useful when two or more of the enumerations used share the same constants.
|
168
177
|
|
169
178
|
class Person < ActiveRecord::Base
|
@@ -194,7 +203,7 @@ This will create:
|
|
194
203
|
|
195
204
|
Person.married.to_sql # => SELECT "people".* FROM "people" WHERE "people"."relationship_status" = 1
|
196
205
|
|
197
|
-
NOTE: The :create_scopes option can only be used for Rails.version >= 3.0.0.
|
206
|
+
NOTE: The :create_scopes option can only be used for Rails.version >= 3.0.0.
|
198
207
|
|
199
208
|
* If your class can manage validations and responds to :validates_inclusion_of, it will create this validation:
|
200
209
|
|
@@ -261,7 +270,7 @@ You can also translate specific values:
|
|
261
270
|
|
262
271
|
* Create an initializer with the following code:
|
263
272
|
|
264
|
-
ActiveRecord::Base.
|
273
|
+
ActiveRecord::Base.extend EnumerateIt
|
265
274
|
|
266
275
|
* Add the 'enumerate_it' gem as a dependency in your environment.rb (Rails 2.3.x) or Gemfile (if you're using Bundler)
|
267
276
|
|
@@ -273,7 +282,7 @@ An interesting approach to use it in Rails apps is to create an app/enumerations
|
|
273
282
|
end
|
274
283
|
end
|
275
284
|
|
276
|
-
There is also a Rails Generator that you can use to generate enumerations and their locale files. Take a look at how to use it running
|
285
|
+
There is also a Rails Generator that you can use to generate enumerations and their locale files. Take a look at how to use it running
|
277
286
|
|
278
287
|
rails generate enumerate_it --help
|
279
288
|
|
data/lib/enumerate_it.rb
CHANGED
@@ -78,7 +78,7 @@
|
|
78
78
|
#
|
79
79
|
# RelationshipStatus.each_value { |value| # ... }
|
80
80
|
#
|
81
|
-
# You can iterate over the list of the enumeration's translations:
|
81
|
+
# You can iterate over the list of the enumeration's translations:
|
82
82
|
#
|
83
83
|
# RelationshipStatus.each_translation { |translation| # ... }
|
84
84
|
#
|
@@ -91,17 +91,17 @@
|
|
91
91
|
# RelationshipStatus.enumeration # returns the exact hash used to define the enumeration
|
92
92
|
#
|
93
93
|
# You can also create enumerations in the following ways:
|
94
|
-
#
|
94
|
+
#
|
95
95
|
# * Passing an array of symbols, so that the respective value for each symbol will be the stringified version of the symbol itself:
|
96
|
-
#
|
96
|
+
#
|
97
97
|
# class RelationshipStatus < EnumerateIt::Base
|
98
98
|
# associate_values :married, :single
|
99
99
|
# end
|
100
|
-
#
|
100
|
+
#
|
101
101
|
# RelationshipStatus::MARRIED # returns "married" and so on
|
102
|
-
#
|
102
|
+
#
|
103
103
|
# * Passing hashes where the value for each key/pair does not include a translation. In this case, the I18n feature will be used (more on this below):
|
104
|
-
#
|
104
|
+
#
|
105
105
|
# class RelationshipStatus < EnumerateIt::Base
|
106
106
|
# associate_values :married => 1, :single => 2
|
107
107
|
# end
|
@@ -112,7 +112,7 @@
|
|
112
112
|
# or not.
|
113
113
|
#
|
114
114
|
# class Person
|
115
|
-
#
|
115
|
+
# extend EnumerateIt
|
116
116
|
# attr_accessor :relationship_status
|
117
117
|
#
|
118
118
|
# has_enumeration_for :relationship_status, :with => RelationshipStatus
|
@@ -158,7 +158,7 @@
|
|
158
158
|
# p.married? #=> true
|
159
159
|
# p.divorced? #=> false
|
160
160
|
#
|
161
|
-
# - It's also possible to "namespace" the created helper methods, passing a hash to the :create_helpers option.
|
161
|
+
# - It's also possible to "namespace" the created helper methods, passing a hash to the :create_helpers option.
|
162
162
|
# This can be useful when two or more of the enumerations used share the same constants.
|
163
163
|
#
|
164
164
|
# class Person < ActiveRecord::Base
|
@@ -205,7 +205,7 @@
|
|
205
205
|
#
|
206
206
|
# * Create an initializer with the following code:
|
207
207
|
#
|
208
|
-
# ActiveRecord::Base.
|
208
|
+
# ActiveRecord::Base.extend EnumerateIt
|
209
209
|
#
|
210
210
|
# * Add the 'enumerate_it' gem as a dependency in your environment.rb (Rails 2.3.x) or Gemfile (if you're using Bundler)
|
211
211
|
#
|
@@ -223,173 +223,11 @@
|
|
223
223
|
#
|
224
224
|
|
225
225
|
require "active_support/core_ext/class/attribute"
|
226
|
-
|
227
|
-
|
228
|
-
@@registered_enumerations = {}
|
229
|
-
|
230
|
-
def self.associate_values(*args)
|
231
|
-
values_hash = args.first.is_a?(Hash) ? args.first : args.inject({}) { |h, v| h[v] = v.to_s; h }
|
232
|
-
|
233
|
-
register_enumeration normalize_enumeration(values_hash)
|
234
|
-
values_hash.each_pair { |value_name, attributes| define_enumeration_constant value_name, attributes[0] }
|
235
|
-
end
|
236
|
-
|
237
|
-
def self.list
|
238
|
-
enumeration.values.map { |value| value[0] }.sort
|
239
|
-
end
|
240
|
-
|
241
|
-
def self.enumeration
|
242
|
-
@@registered_enumerations[self]
|
243
|
-
end
|
244
|
-
|
245
|
-
def self.to_a
|
246
|
-
enumeration.values.map {|value| [translate(value[1]), value[0]] }.sort_by { |value| value[0] }
|
247
|
-
end
|
248
|
-
|
249
|
-
def self.length
|
250
|
-
list.length
|
251
|
-
end
|
252
|
-
|
253
|
-
def self.each_translation
|
254
|
-
each_value { |value| yield t(value) }
|
255
|
-
end
|
256
|
-
|
257
|
-
def self.each_value
|
258
|
-
list.each { |value| yield value }
|
259
|
-
end
|
260
|
-
|
261
|
-
def self.to_json
|
262
|
-
enumeration.values.collect {|value| { :value => value[0], :label => translate(value[1]) } }.to_json
|
263
|
-
end
|
264
|
-
|
265
|
-
def self.t(value)
|
266
|
-
target = to_a.detect { |item| item[1] == value }
|
267
|
-
target ? target[0] : value
|
268
|
-
end
|
269
|
-
|
270
|
-
def self.values_for(values)
|
271
|
-
values.map { |v| self.const_get(v.to_sym) }
|
272
|
-
end
|
273
|
-
|
274
|
-
def self.value_for(value)
|
275
|
-
self.const_get(value.to_sym)
|
276
|
-
end
|
277
|
-
|
278
|
-
def self.key_for(value)
|
279
|
-
enumeration.map {|e| e[0] if e[1][0] == value }.compact.first
|
280
|
-
end
|
281
|
-
|
282
|
-
def self.to_range
|
283
|
-
(list.min..list.max)
|
284
|
-
end
|
285
|
-
|
286
|
-
private
|
287
|
-
def self.translate(value)
|
288
|
-
return value unless value.is_a? Symbol
|
226
|
+
require "enumerate_it/base"
|
227
|
+
require "enumerate_it/class_methods"
|
289
228
|
|
290
|
-
|
291
|
-
|
292
|
-
end
|
293
|
-
|
294
|
-
def self.normalize_enumeration(values_hash)
|
295
|
-
values_hash.each_pair do |key, value|
|
296
|
-
unless value.is_a? Array
|
297
|
-
values_hash[key] = [value, key]
|
298
|
-
end
|
299
|
-
end
|
300
|
-
end
|
301
|
-
|
302
|
-
def self.register_enumeration(values_hash)
|
303
|
-
@@registered_enumerations[self] = values_hash
|
304
|
-
end
|
305
|
-
|
306
|
-
def self.define_enumeration_constant(name, value)
|
307
|
-
const_set name.to_s.upcase, value
|
308
|
-
end
|
309
|
-
end
|
310
|
-
|
311
|
-
module ClassMethods
|
312
|
-
def has_enumeration_for(attribute, options = {})
|
313
|
-
self.enumerations = self.enumerations.dup
|
314
|
-
|
315
|
-
define_enumeration_class attribute, options
|
316
|
-
set_validations attribute, options
|
317
|
-
create_enumeration_humanize_method options[:with], attribute
|
318
|
-
store_enumeration options[:with], attribute
|
319
|
-
if options[:create_helpers]
|
320
|
-
create_helper_methods options[:with], attribute, options[:create_helpers]
|
321
|
-
create_mutator_methods options[:with], attribute, options[:create_helpers]
|
322
|
-
end
|
323
|
-
|
324
|
-
if options[:create_scopes]
|
325
|
-
create_scopes options[:with], attribute
|
326
|
-
end
|
327
|
-
end
|
328
|
-
|
329
|
-
private
|
330
|
-
def store_enumeration(klass, attribute)
|
331
|
-
enumerations[attribute] = klass
|
332
|
-
end
|
333
|
-
|
334
|
-
def create_enumeration_humanize_method(klass, attribute_name)
|
335
|
-
class_eval do
|
336
|
-
define_method "#{attribute_name}_humanize" do
|
337
|
-
values = klass.enumeration.values.detect { |v| v[0] == self.send(attribute_name) }
|
338
|
-
|
339
|
-
values ? klass.translate(values[1]) : nil
|
340
|
-
end
|
341
|
-
end
|
342
|
-
end
|
343
|
-
|
344
|
-
def create_helper_methods(klass, attribute_name, helpers)
|
345
|
-
prefix_name = "#{attribute_name}_" if helpers.is_a?(Hash) && helpers[:prefix]
|
346
|
-
|
347
|
-
class_eval do
|
348
|
-
klass.enumeration.keys.each do |option|
|
349
|
-
define_method "#{prefix_name}#{option}?" do
|
350
|
-
self.send(attribute_name) == klass.enumeration[option].first
|
351
|
-
end
|
352
|
-
end
|
353
|
-
end
|
354
|
-
end
|
355
|
-
|
356
|
-
def create_scopes(klass, attribute_name)
|
357
|
-
klass.enumeration.keys.each do |option|
|
358
|
-
if respond_to? :scope
|
359
|
-
scope option, lambda { where(attribute_name => klass.enumeration[option].first)}
|
360
|
-
end
|
361
|
-
end
|
362
|
-
end
|
363
|
-
|
364
|
-
def create_mutator_methods(klass, attribute_name, helpers)
|
365
|
-
prefix_name = "#{attribute_name}_" if helpers.is_a?(Hash) && helpers[:prefix]
|
366
|
-
|
367
|
-
class_eval do
|
368
|
-
klass.enumeration.each_pair do |key, values|
|
369
|
-
define_method "#{prefix_name}#{key}!" do
|
370
|
-
self.send "#{attribute_name}=", values.first
|
371
|
-
end
|
372
|
-
end
|
373
|
-
end
|
374
|
-
end
|
375
|
-
|
376
|
-
def define_enumeration_class(attribute, options)
|
377
|
-
if options[:with].nil?
|
378
|
-
options[:with] = attribute.to_s.camelize.constantize
|
379
|
-
end
|
380
|
-
end
|
381
|
-
|
382
|
-
def set_validations(attribute, options)
|
383
|
-
validates_inclusion_of(attribute, :in => options[:with].list, :allow_blank => true) if self.respond_to?(:validates_inclusion_of)
|
384
|
-
|
385
|
-
if options[:required] && respond_to?(:validates_presence_of)
|
386
|
-
opts = options[:required].is_a?(Hash) ? options[:required] : {}
|
387
|
-
validates_presence_of(attribute, opts)
|
388
|
-
end
|
389
|
-
end
|
390
|
-
end
|
391
|
-
|
392
|
-
def self.included(receiver)
|
229
|
+
module EnumerateIt
|
230
|
+
def self.extended(receiver)
|
393
231
|
receiver.class_attribute :enumerations, :instance_writer => false, :instance_reader => false
|
394
232
|
receiver.enumerations = {}
|
395
233
|
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module EnumerateIt
|
3
|
+
class Base
|
4
|
+
@@registered_enumerations = {}
|
5
|
+
|
6
|
+
def self.associate_values(*args)
|
7
|
+
values_hash = args.first.is_a?(Hash) ? args.first : args.inject({}) { |h, v| h[v] = v.to_s; h }
|
8
|
+
|
9
|
+
register_enumeration normalize_enumeration(values_hash)
|
10
|
+
values_hash.each_pair { |value_name, attributes| define_enumeration_constant value_name, attributes[0] }
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.list
|
14
|
+
enumeration.values.map { |value| value[0] }.sort
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.enumeration
|
18
|
+
@@registered_enumerations[self]
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.to_a
|
22
|
+
enumeration.values.map {|value| [translate(value[1]), value[0]] }.sort_by { |value| value[0] }
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.length
|
26
|
+
list.length
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.each_translation
|
30
|
+
each_value { |value| yield t(value) }
|
31
|
+
end
|
32
|
+
|
33
|
+
def self.each_value
|
34
|
+
list.each { |value| yield value }
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.to_json
|
38
|
+
enumeration.values.collect {|value| { :value => value[0], :label => translate(value[1]) } }.to_json
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.t(value)
|
42
|
+
target = to_a.detect { |item| item[1] == value }
|
43
|
+
target ? target[0] : value
|
44
|
+
end
|
45
|
+
|
46
|
+
def self.values_for(values)
|
47
|
+
values.map { |v| self.const_get(v.to_sym) }
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.value_for(value)
|
51
|
+
self.const_get(value.to_sym)
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.key_for(value)
|
55
|
+
enumeration.map {|e| e[0] if e[1][0] == value }.compact.first
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.to_range
|
59
|
+
(list.min..list.max)
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
def self.translate(value)
|
64
|
+
return value unless value.is_a? Symbol
|
65
|
+
|
66
|
+
default = value.to_s.gsub(/_/, ' ').split.map(&:capitalize).join(' ')
|
67
|
+
I18n.t("enumerations.#{self.name.underscore}.#{value.to_s.underscore}", :default => default)
|
68
|
+
end
|
69
|
+
|
70
|
+
def self.normalize_enumeration(values_hash)
|
71
|
+
values_hash.each_pair do |key, value|
|
72
|
+
unless value.is_a? Array
|
73
|
+
values_hash[key] = [value, key]
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
def self.register_enumeration(values_hash)
|
79
|
+
@@registered_enumerations[self] = values_hash
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.define_enumeration_constant(name, value)
|
83
|
+
const_set name.to_s.upcase, value
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
module EnumerateIt
|
3
|
+
module ClassMethods
|
4
|
+
def has_enumeration_for(attribute, options = {})
|
5
|
+
self.enumerations = self.enumerations.dup
|
6
|
+
|
7
|
+
define_enumeration_class attribute, options
|
8
|
+
set_validations attribute, options
|
9
|
+
create_enumeration_humanize_method options[:with], attribute
|
10
|
+
store_enumeration options[:with], attribute
|
11
|
+
if options[:create_helpers]
|
12
|
+
create_helper_methods options[:with], attribute, options[:create_helpers]
|
13
|
+
create_mutator_methods options[:with], attribute, options[:create_helpers]
|
14
|
+
end
|
15
|
+
|
16
|
+
if options[:create_scopes]
|
17
|
+
create_scopes options[:with], attribute
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
def store_enumeration(klass, attribute)
|
23
|
+
enumerations[attribute] = klass
|
24
|
+
end
|
25
|
+
|
26
|
+
def create_enumeration_humanize_method(klass, attribute_name)
|
27
|
+
class_eval do
|
28
|
+
define_method "#{attribute_name}_humanize" do
|
29
|
+
values = klass.enumeration.values.detect { |v| v[0] == self.send(attribute_name) }
|
30
|
+
|
31
|
+
values ? klass.translate(values[1]) : nil
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def create_helper_methods(klass, attribute_name, helpers)
|
37
|
+
prefix_name = "#{attribute_name}_" if helpers.is_a?(Hash) && helpers[:prefix]
|
38
|
+
|
39
|
+
class_eval do
|
40
|
+
klass.enumeration.keys.each do |option|
|
41
|
+
define_method "#{prefix_name}#{option}?" do
|
42
|
+
self.send(attribute_name) == klass.enumeration[option].first
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def create_scopes(klass, attribute_name)
|
49
|
+
klass.enumeration.keys.each do |option|
|
50
|
+
if respond_to? :scope
|
51
|
+
scope option, lambda { where(attribute_name => klass.enumeration[option].first)}
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def create_mutator_methods(klass, attribute_name, helpers)
|
57
|
+
prefix_name = "#{attribute_name}_" if helpers.is_a?(Hash) && helpers[:prefix]
|
58
|
+
|
59
|
+
class_eval do
|
60
|
+
klass.enumeration.each_pair do |key, values|
|
61
|
+
define_method "#{prefix_name}#{key}!" do
|
62
|
+
self.send "#{attribute_name}=", values.first
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def define_enumeration_class(attribute, options)
|
69
|
+
if options[:with].nil?
|
70
|
+
options[:with] = attribute.to_s.camelize.constantize
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def set_validations(attribute, options)
|
75
|
+
validates_inclusion_of(attribute, :in => options[:with].list, :allow_blank => true) if self.respond_to?(:validates_inclusion_of)
|
76
|
+
|
77
|
+
if options[:required] && respond_to?(:validates_presence_of)
|
78
|
+
opts = options[:required].is_a?(Hash) ? options[:required] : {}
|
79
|
+
validates_presence_of(attribute, opts)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
data/lib/enumerate_it/version.rb
CHANGED
data/spec/enumerate_it_spec.rb
CHANGED
@@ -37,14 +37,14 @@ class Foobar < EnumerateIt::Base
|
|
37
37
|
end
|
38
38
|
|
39
39
|
class BaseClass
|
40
|
-
|
40
|
+
extend EnumerateIt
|
41
41
|
has_enumeration_for :foobar, :with => TestEnumeration
|
42
42
|
end
|
43
43
|
|
44
44
|
describe EnumerateIt do
|
45
45
|
before :each do
|
46
46
|
class TestClass
|
47
|
-
|
47
|
+
extend EnumerateIt
|
48
48
|
attr_accessor :foobar
|
49
49
|
has_enumeration_for :foobar, :with => TestEnumeration
|
50
50
|
|
@@ -104,7 +104,7 @@ describe EnumerateIt do
|
|
104
104
|
context "passing the value of each option without the human string (just the value, without an array)" do
|
105
105
|
before :each do
|
106
106
|
class TestClassForEnumerationWithoutArray
|
107
|
-
|
107
|
+
extend EnumerateIt
|
108
108
|
attr_accessor :foobar
|
109
109
|
has_enumeration_for :foobar, :with => TestEnumerationWithoutArray
|
110
110
|
|
@@ -130,7 +130,7 @@ describe EnumerateIt do
|
|
130
130
|
context "without passing the enumeration class" do
|
131
131
|
before :each do
|
132
132
|
class FooBar
|
133
|
-
|
133
|
+
extend EnumerateIt
|
134
134
|
attr_accessor :test_enumeration
|
135
135
|
has_enumeration_for :test_enumeration
|
136
136
|
def initialize(test_enumeration_value)
|
@@ -367,7 +367,7 @@ describe EnumerateIt::Base do
|
|
367
367
|
end
|
368
368
|
|
369
369
|
ActiveRecordStub.stub!(:validates_inclusion_of).and_return(true)
|
370
|
-
ActiveRecordStub.
|
370
|
+
ActiveRecordStub.extend EnumerateIt
|
371
371
|
end
|
372
372
|
|
373
373
|
it "creates a validation for inclusion" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enumerate_it
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-08
|
12
|
+
date: 2012-11-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -95,6 +95,8 @@ files:
|
|
95
95
|
- Rakefile
|
96
96
|
- enumerate_it.gemspec
|
97
97
|
- lib/enumerate_it.rb
|
98
|
+
- lib/enumerate_it/base.rb
|
99
|
+
- lib/enumerate_it/class_methods.rb
|
98
100
|
- lib/enumerate_it/version.rb
|
99
101
|
- lib/generators/USAGE
|
100
102
|
- lib/generators/enumerate_it_generator.rb
|
@@ -119,7 +121,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
119
121
|
version: '0'
|
120
122
|
segments:
|
121
123
|
- 0
|
122
|
-
hash: -
|
124
|
+
hash: -1315505449336147275
|
123
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
126
|
none: false
|
125
127
|
requirements:
|
@@ -128,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
130
|
version: '0'
|
129
131
|
segments:
|
130
132
|
- 0
|
131
|
-
hash: -
|
133
|
+
hash: -1315505449336147275
|
132
134
|
requirements: []
|
133
135
|
rubyforge_project:
|
134
136
|
rubygems_version: 1.8.24
|