enumerate_it 1.0.0 → 1.0.1
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 +5 -24
- data/lib/enumerate_it/version.rb +1 -1
- data/lib/generators/{USAGE → enumerate_it/enum/USAGE} +1 -1
- data/lib/generators/enumerate_it/enum/enum_generator.rb +47 -0
- data/lib/generators/{templates → enumerate_it/enum/templates}/enumerate_it.rb +0 -0
- data/lib/generators/{templates → enumerate_it/enum/templates}/locale.yml +0 -0
- data/lib/generators/enumerate_it/install/USAGE +8 -0
- data/lib/generators/enumerate_it/install/install_generator.rb +11 -0
- data/lib/generators/enumerate_it/install/templates/enumerate_it_initializer.rb +1 -0
- metadata +11 -8
- data/lib/generators/enumerate_it_generator.rb +0 -41
data/Gemfile.lock
CHANGED
data/README.rdoc
CHANGED
@@ -39,10 +39,6 @@ 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
42
|
== About versions compatibility
|
47
43
|
|
48
44
|
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
|
@@ -268,11 +264,13 @@ You can also translate specific values:
|
|
268
264
|
|
269
265
|
== Using with Rails
|
270
266
|
|
271
|
-
*
|
267
|
+
* Add the gem to your Gemfile:
|
272
268
|
|
273
|
-
|
269
|
+
gem "enumerate_it"
|
274
270
|
|
275
|
-
*
|
271
|
+
* Run the install generator:
|
272
|
+
|
273
|
+
rails g enumerate_it:install
|
276
274
|
|
277
275
|
An interesting approach to use it in Rails apps is to create an app/enumerations folder and add it to your autoload path in config/application.rb:
|
278
276
|
|
@@ -286,23 +284,6 @@ There is also a Rails Generator that you can use to generate enumerations and th
|
|
286
284
|
|
287
285
|
rails generate enumerate_it --help
|
288
286
|
|
289
|
-
== Ruby 1.9
|
290
|
-
|
291
|
-
EnumerateIt is fully compatible with Ruby 1.9.1 and 1.9.2 (all tests pass)
|
292
|
-
|
293
|
-
* Note: on ruby 1.9.2, if you are using the enumerations in a separate folder like app/models/enumerations, and have to use the :with parameter, you have to clear the enum class namespace to a global scope by using ::EnumClass instead of EnumClass:
|
294
|
-
|
295
|
-
# 1.8.7
|
296
|
-
class Person < ActiveRecord::Base
|
297
|
-
has_enumeration_for :relationship_status, :with => EnumClass
|
298
|
-
end
|
299
|
-
|
300
|
-
# 1.9.2
|
301
|
-
class Person < ActiveRecord::Base
|
302
|
-
has_enumeration_for :relationship_status, :with => ::EnumClass
|
303
|
-
end
|
304
|
-
|
305
|
-
|
306
287
|
== Why did you reinvent the wheel?
|
307
288
|
|
308
289
|
There are other similar solutions to the problem out there, but I could not find one that
|
data/lib/enumerate_it/version.rb
CHANGED
@@ -2,7 +2,7 @@ Description:
|
|
2
2
|
Creates an EnumerateIt class an its locale file
|
3
3
|
|
4
4
|
Example:
|
5
|
-
rails g enumerate_it CivilStatus single married divorced widower concubinage separated stable
|
5
|
+
rails g enumerate_it:enum CivilStatus single married divorced widower concubinage separated stable
|
6
6
|
|
7
7
|
This will create:
|
8
8
|
app/enumerations/civil_status.rb with `associate_values :single, :married, :divorced, :widower, :concubinage, :separated, :stable`
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module EnumerateIt
|
2
|
+
module Generators
|
3
|
+
class EnumGenerator < Rails::Generators::NamedBase
|
4
|
+
source_root File.expand_path('../templates', __FILE__)
|
5
|
+
|
6
|
+
argument :attributes, :type => 'array', :default => []
|
7
|
+
|
8
|
+
class_option :singular, :type => 'string', :desc => 'Singular name for i18n'
|
9
|
+
|
10
|
+
class_option :lang, :type => 'string', :desc => 'Lang to use in i18n', :default => 'en'
|
11
|
+
|
12
|
+
desc "Creates a locale file on config/locales"
|
13
|
+
def create_locale
|
14
|
+
template "locale.yml", File.join('config/locales', "#{singular_name}.yml")
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "Creates an initializer file on config/initializers that extends ActiveRecord::Base with Enumerate_it"
|
18
|
+
def create_enumerate_it
|
19
|
+
template "enumerate_it.rb", File.join('app/enumerations', "#{singular_name}.rb")
|
20
|
+
end
|
21
|
+
|
22
|
+
protected
|
23
|
+
|
24
|
+
def default_lang
|
25
|
+
options[:lang]
|
26
|
+
end
|
27
|
+
|
28
|
+
def singular
|
29
|
+
singular_name
|
30
|
+
end
|
31
|
+
|
32
|
+
def locale_fields
|
33
|
+
attributes.map(&:name)
|
34
|
+
end
|
35
|
+
|
36
|
+
def fields
|
37
|
+
if attributes.first.type == :string
|
38
|
+
attributes.map(&:name)
|
39
|
+
else
|
40
|
+
attributes.map do |attribute|
|
41
|
+
[attribute.name, attribute.type]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
File without changes
|
File without changes
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module EnumerateIt
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
source_root File.expand_path('../templates', __FILE__)
|
5
|
+
|
6
|
+
def copy_initializer_file
|
7
|
+
template "enumerate_it_initializer.rb", File.join('config/initializers/', "enumerate_it.rb")
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
ActiveRecord::Base.extend EnumerateIt
|
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: 1.0.
|
4
|
+
version: 1.0.1
|
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-11-
|
12
|
+
date: 2012-11-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -98,10 +98,13 @@ files:
|
|
98
98
|
- lib/enumerate_it/base.rb
|
99
99
|
- lib/enumerate_it/class_methods.rb
|
100
100
|
- lib/enumerate_it/version.rb
|
101
|
-
- lib/generators/USAGE
|
102
|
-
- lib/generators/
|
103
|
-
- lib/generators/templates/enumerate_it.rb
|
104
|
-
- lib/generators/templates/locale.yml
|
101
|
+
- lib/generators/enumerate_it/enum/USAGE
|
102
|
+
- lib/generators/enumerate_it/enum/enum_generator.rb
|
103
|
+
- lib/generators/enumerate_it/enum/templates/enumerate_it.rb
|
104
|
+
- lib/generators/enumerate_it/enum/templates/locale.yml
|
105
|
+
- lib/generators/enumerate_it/install/USAGE
|
106
|
+
- lib/generators/enumerate_it/install/install_generator.rb
|
107
|
+
- lib/generators/enumerate_it/install/templates/enumerate_it_initializer.rb
|
105
108
|
- spec/enumerate_it_spec.rb
|
106
109
|
- spec/i18n/en.yml
|
107
110
|
- spec/i18n/pt.yml
|
@@ -121,7 +124,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
121
124
|
version: '0'
|
122
125
|
segments:
|
123
126
|
- 0
|
124
|
-
hash:
|
127
|
+
hash: 4432600982721649974
|
125
128
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
129
|
none: false
|
127
130
|
requirements:
|
@@ -130,7 +133,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
130
133
|
version: '0'
|
131
134
|
segments:
|
132
135
|
- 0
|
133
|
-
hash:
|
136
|
+
hash: 4432600982721649974
|
134
137
|
requirements: []
|
135
138
|
rubyforge_project:
|
136
139
|
rubygems_version: 1.8.24
|
@@ -1,41 +0,0 @@
|
|
1
|
-
class EnumerateItGenerator < Rails::Generators::NamedBase
|
2
|
-
source_root File.expand_path('../templates', __FILE__)
|
3
|
-
|
4
|
-
argument :attributes, :type => 'array', :default => []
|
5
|
-
|
6
|
-
class_option :singular, :type => 'string', :desc => 'Singular name for i18n'
|
7
|
-
|
8
|
-
class_option :lang, :type => 'string', :desc => 'Lang to use in i18n', :default => 'en'
|
9
|
-
|
10
|
-
def create_locale
|
11
|
-
template "locale.yml", File.join('config/locales', "#{singular_name}.yml")
|
12
|
-
end
|
13
|
-
|
14
|
-
def create_enumerate_it
|
15
|
-
template "enumerate_it.rb", File.join('app/enumerations', "#{singular_name}.rb")
|
16
|
-
end
|
17
|
-
|
18
|
-
protected
|
19
|
-
|
20
|
-
def default_lang
|
21
|
-
options[:lang]
|
22
|
-
end
|
23
|
-
|
24
|
-
def singular
|
25
|
-
singular_name
|
26
|
-
end
|
27
|
-
|
28
|
-
def locale_fields
|
29
|
-
attributes.map(&:name)
|
30
|
-
end
|
31
|
-
|
32
|
-
def fields
|
33
|
-
if attributes.first.type == :string
|
34
|
-
attributes.map(&:name)
|
35
|
-
else
|
36
|
-
attributes.map do |attribute|
|
37
|
-
[attribute.name, attribute.type]
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|