classy_enum 0.9.1 → 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 +1 -1
- data/Gemfile.lock +7 -7
- data/README.textile +2 -10
- data/VERSION +1 -1
- data/classy_enum.gemspec +11 -11
- data/lib/classy_enum.rb +1 -0
- data/lib/classy_enum/active_record.rb +15 -0
- data/spec/active_record_spec.rb +22 -0
- data/spec/spec_helper.rb +8 -2
- metadata +40 -42
- data/generators/classy_enum_generator.rb +0 -10
- data/generators/templates/enum.rb +0 -7
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -28,7 +28,7 @@ GEM
|
|
28
28
|
activemodel (= 3.0.5)
|
29
29
|
activesupport (= 3.0.5)
|
30
30
|
activesupport (3.0.5)
|
31
|
-
arel (2.0.
|
31
|
+
arel (2.0.10)
|
32
32
|
builder (2.1.2)
|
33
33
|
columnize (0.3.2)
|
34
34
|
diff-lcs (1.1.2)
|
@@ -39,20 +39,20 @@ GEM
|
|
39
39
|
activesupport (>= 2.3.7)
|
40
40
|
i18n (~> 0.4)
|
41
41
|
git (1.2.5)
|
42
|
-
i18n (0.
|
42
|
+
i18n (0.6.0)
|
43
43
|
jeweler (1.6.2)
|
44
44
|
bundler (~> 1.0)
|
45
45
|
git (>= 1.2.5)
|
46
46
|
rake
|
47
47
|
linecache (0.43)
|
48
|
-
mail (2.2.
|
48
|
+
mail (2.2.19)
|
49
49
|
activesupport (>= 2.3.6)
|
50
50
|
i18n (>= 0.4.0)
|
51
51
|
mime-types (~> 1.16)
|
52
52
|
treetop (~> 1.4.8)
|
53
53
|
mime-types (1.16)
|
54
54
|
polyglot (0.3.1)
|
55
|
-
rack (1.2.
|
55
|
+
rack (1.2.3)
|
56
56
|
rack-mount (0.6.14)
|
57
57
|
rack (>= 1.0.0)
|
58
58
|
rack-test (0.5.7)
|
@@ -70,7 +70,7 @@ GEM
|
|
70
70
|
activesupport (= 3.0.5)
|
71
71
|
rake (>= 0.8.7)
|
72
72
|
thor (~> 0.14.4)
|
73
|
-
rake (0.
|
73
|
+
rake (0.9.2)
|
74
74
|
rcov (0.9.9)
|
75
75
|
rspec (2.6.0)
|
76
76
|
rspec-core (~> 2.6.0)
|
@@ -94,7 +94,7 @@ GEM
|
|
94
94
|
thor (0.14.6)
|
95
95
|
treetop (1.4.9)
|
96
96
|
polyglot (>= 0.3.1)
|
97
|
-
tzinfo (0.3.
|
97
|
+
tzinfo (0.3.29)
|
98
98
|
|
99
99
|
PLATFORMS
|
100
100
|
ruby
|
@@ -102,7 +102,7 @@ PLATFORMS
|
|
102
102
|
DEPENDENCIES
|
103
103
|
formtastic (~> 1.2.4)
|
104
104
|
jeweler (~> 1.6.2)
|
105
|
-
rails (
|
105
|
+
rails (~> 3.0.0)
|
106
106
|
rcov
|
107
107
|
rspec-rails (~> 2.6.1)
|
108
108
|
ruby-debug
|
data/README.textile
CHANGED
@@ -4,13 +4,13 @@ ClassyEnum is a Ruby on Rails gem that adds class-based enumerator functionality
|
|
4
4
|
|
5
5
|
h2. Requirements
|
6
6
|
|
7
|
-
*Rails:*
|
7
|
+
*Rails:* 3.0.x. If you need support for Rails 2.3.x, please install "version 0.9.1":https://rubygems.org/gems/classy_enum/versions/0.9.1
|
8
8
|
|
9
9
|
*Ruby:* Ruby 1.8.7 and 1.9.2.
|
10
10
|
|
11
11
|
h2. Installation
|
12
12
|
|
13
|
-
The gem is hosted at "rubygems.org":https://rubygems.org/gems/classy_enum
|
13
|
+
The gem is hosted at "rubygems.org":https://rubygems.org/gems/classy_enum
|
14
14
|
|
15
15
|
You will also need to add @app/enums@ as an autoloadable path. This configuration will depend on which version of rails you are using.
|
16
16
|
|
@@ -22,14 +22,6 @@ h3. 1. Generate the Enum
|
|
22
22
|
|
23
23
|
The fastest way to get up and running with ClassyEnum is to use the built-in Rails generator like so:
|
24
24
|
|
25
|
-
Rails 2.3.x:
|
26
|
-
|
27
|
-
<pre>
|
28
|
-
script/generate classy_enum Priority low medium high
|
29
|
-
</pre>
|
30
|
-
|
31
|
-
Rails 3.x
|
32
|
-
|
33
25
|
<pre>
|
34
26
|
rails g classy_enum Priority low medium high
|
35
27
|
</pre>
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
1.0.0
|
data/classy_enum.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{classy_enum}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "1.0.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = [
|
12
|
-
s.date = %q{2011-06-
|
11
|
+
s.authors = [%q{Peter Brown}]
|
12
|
+
s.date = %q{2011-06-29}
|
13
13
|
s.description = %q{A utility that adds class based enum functionality to ActiveRecord attributes}
|
14
14
|
s.email = %q{github@lette.us}
|
15
15
|
s.extra_rdoc_files = [
|
@@ -25,10 +25,9 @@ Gem::Specification.new do |s|
|
|
25
25
|
"Rakefile",
|
26
26
|
"VERSION",
|
27
27
|
"classy_enum.gemspec",
|
28
|
-
"generators/classy_enum_generator.rb",
|
29
|
-
"generators/templates/enum.rb",
|
30
28
|
"init.rb",
|
31
29
|
"lib/classy_enum.rb",
|
30
|
+
"lib/classy_enum/active_record.rb",
|
32
31
|
"lib/classy_enum/attributes.rb",
|
33
32
|
"lib/classy_enum/base.rb",
|
34
33
|
"lib/classy_enum/class_methods.rb",
|
@@ -36,22 +35,23 @@ Gem::Specification.new do |s|
|
|
36
35
|
"lib/classy_enum/semantic_form_builder.rb",
|
37
36
|
"lib/generators/classy_enum/classy_enum_generator.rb",
|
38
37
|
"lib/generators/classy_enum/templates/enum.rb",
|
38
|
+
"spec/active_record_spec.rb",
|
39
39
|
"spec/classy_enum_attributes_spec.rb",
|
40
40
|
"spec/classy_enum_semantic_form_builder_spec.rb",
|
41
41
|
"spec/classy_enum_spec.rb",
|
42
42
|
"spec/spec_helper.rb"
|
43
43
|
]
|
44
44
|
s.homepage = %q{http://github.com/beerlington/classy_enum}
|
45
|
-
s.licenses = [
|
46
|
-
s.require_paths = [
|
47
|
-
s.rubygems_version = %q{1.
|
45
|
+
s.licenses = [%q{MIT}]
|
46
|
+
s.require_paths = [%q{lib}]
|
47
|
+
s.rubygems_version = %q{1.8.5}
|
48
48
|
s.summary = %q{A class based enumerator utility for Ruby on Rails}
|
49
49
|
|
50
50
|
if s.respond_to? :specification_version then
|
51
51
|
s.specification_version = 3
|
52
52
|
|
53
53
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
54
|
-
s.add_runtime_dependency(%q<rails>, ["
|
54
|
+
s.add_runtime_dependency(%q<rails>, ["~> 3.0.0"])
|
55
55
|
s.add_development_dependency(%q<jeweler>, ["~> 1.6.2"])
|
56
56
|
s.add_development_dependency(%q<rcov>, [">= 0"])
|
57
57
|
s.add_development_dependency(%q<rspec-rails>, ["~> 2.6.1"])
|
@@ -59,7 +59,7 @@ Gem::Specification.new do |s|
|
|
59
59
|
s.add_development_dependency(%q<sqlite3-ruby>, [">= 0"])
|
60
60
|
s.add_development_dependency(%q<ruby-debug>, [">= 0"])
|
61
61
|
else
|
62
|
-
s.add_dependency(%q<rails>, ["
|
62
|
+
s.add_dependency(%q<rails>, ["~> 3.0.0"])
|
63
63
|
s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
|
64
64
|
s.add_dependency(%q<rcov>, [">= 0"])
|
65
65
|
s.add_dependency(%q<rspec-rails>, ["~> 2.6.1"])
|
@@ -68,7 +68,7 @@ Gem::Specification.new do |s|
|
|
68
68
|
s.add_dependency(%q<ruby-debug>, [">= 0"])
|
69
69
|
end
|
70
70
|
else
|
71
|
-
s.add_dependency(%q<rails>, ["
|
71
|
+
s.add_dependency(%q<rails>, ["~> 3.0.0"])
|
72
72
|
s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
|
73
73
|
s.add_dependency(%q<rcov>, [">= 0"])
|
74
74
|
s.add_dependency(%q<rspec-rails>, ["~> 2.6.1"])
|
data/lib/classy_enum.rb
CHANGED
@@ -0,0 +1,15 @@
|
|
1
|
+
module ActiveRecord # :nodoc: all
|
2
|
+
class PredicateBuilder
|
3
|
+
def build_from_hash_with_classy_enum(attributes, default_table)
|
4
|
+
|
5
|
+
# Convert classy enum values to strings
|
6
|
+
attributes.map do |column, value|
|
7
|
+
attributes[column] = value.to_s if value.is_a? ClassyEnum::Base
|
8
|
+
end
|
9
|
+
|
10
|
+
build_from_hash_without_classy_enum(attributes, default_table)
|
11
|
+
end
|
12
|
+
|
13
|
+
alias_method_chain :build_from_hash, :classy_enum
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
class ActiveDog < ActiveRecord::Base
|
4
|
+
classy_enum_attr :breed
|
5
|
+
|
6
|
+
validates :name,
|
7
|
+
:presence => true,
|
8
|
+
:uniqueness => { :scope => [:breed] }
|
9
|
+
|
10
|
+
end
|
11
|
+
|
12
|
+
describe ActiveDog do
|
13
|
+
before do
|
14
|
+
ActiveDog.create!(:name => 'Sebastian', :breed => :golden_retriever)
|
15
|
+
ActiveDog.create!(:name => 'Sirius', :breed => :husky)
|
16
|
+
end
|
17
|
+
|
18
|
+
it 'should allow validation with classy enum scope' do
|
19
|
+
dog = ActiveDog.new(:name => 'Sirius', :breed => :golden_retriever)
|
20
|
+
dog.should be_valid
|
21
|
+
end
|
22
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -29,14 +29,20 @@ ActiveRecord::Schema.define(:version => 1) do
|
|
29
29
|
create_table :allow_blank_breed_dogs, :force => true do |t|
|
30
30
|
t.string :breed
|
31
31
|
end
|
32
|
-
|
32
|
+
|
33
33
|
create_table :allow_nil_breed_dogs, :force => true do |t|
|
34
34
|
t.string :breed
|
35
35
|
end
|
36
|
+
|
37
|
+
create_table :active_dogs, :force => true do |t|
|
38
|
+
t.string :breed
|
39
|
+
t.string :name
|
40
|
+
t.integer :age
|
41
|
+
end
|
36
42
|
end
|
37
43
|
|
38
44
|
class Breed < ClassyEnum::Base
|
39
|
-
enum_classes :golden_retriever, :snoop
|
45
|
+
enum_classes :golden_retriever, :snoop, :husky
|
40
46
|
end
|
41
47
|
|
42
48
|
class Dog < ActiveRecord::Base
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: classy_enum
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
|
-
- 0
|
8
|
-
- 9
|
9
7
|
- 1
|
10
|
-
|
8
|
+
- 0
|
9
|
+
- 0
|
10
|
+
version: 1.0.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Peter Brown
|
@@ -15,27 +15,26 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-06-
|
19
|
-
default_executable:
|
18
|
+
date: 2011-06-29 00:00:00 Z
|
20
19
|
dependencies:
|
21
20
|
- !ruby/object:Gem::Dependency
|
22
|
-
|
21
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
23
22
|
none: false
|
24
23
|
requirements:
|
25
|
-
- -
|
24
|
+
- - ~>
|
26
25
|
- !ruby/object:Gem::Version
|
27
|
-
hash:
|
26
|
+
hash: 7
|
28
27
|
segments:
|
29
|
-
- 2
|
30
28
|
- 3
|
31
29
|
- 0
|
32
|
-
|
33
|
-
|
34
|
-
version_requirements: *id001
|
35
|
-
prerelease: false
|
30
|
+
- 0
|
31
|
+
version: 3.0.0
|
36
32
|
type: :runtime
|
33
|
+
requirement: *id001
|
34
|
+
prerelease: false
|
35
|
+
name: rails
|
37
36
|
- !ruby/object:Gem::Dependency
|
38
|
-
|
37
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
39
38
|
none: false
|
40
39
|
requirements:
|
41
40
|
- - ~>
|
@@ -46,12 +45,12 @@ dependencies:
|
|
46
45
|
- 6
|
47
46
|
- 2
|
48
47
|
version: 1.6.2
|
49
|
-
name: jeweler
|
50
|
-
version_requirements: *id002
|
51
|
-
prerelease: false
|
52
48
|
type: :development
|
49
|
+
requirement: *id002
|
50
|
+
prerelease: false
|
51
|
+
name: jeweler
|
53
52
|
- !ruby/object:Gem::Dependency
|
54
|
-
|
53
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
55
54
|
none: false
|
56
55
|
requirements:
|
57
56
|
- - ">="
|
@@ -60,12 +59,12 @@ dependencies:
|
|
60
59
|
segments:
|
61
60
|
- 0
|
62
61
|
version: "0"
|
63
|
-
name: rcov
|
64
|
-
version_requirements: *id003
|
65
|
-
prerelease: false
|
66
62
|
type: :development
|
63
|
+
requirement: *id003
|
64
|
+
prerelease: false
|
65
|
+
name: rcov
|
67
66
|
- !ruby/object:Gem::Dependency
|
68
|
-
|
67
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
69
68
|
none: false
|
70
69
|
requirements:
|
71
70
|
- - ~>
|
@@ -76,12 +75,12 @@ dependencies:
|
|
76
75
|
- 6
|
77
76
|
- 1
|
78
77
|
version: 2.6.1
|
79
|
-
name: rspec-rails
|
80
|
-
version_requirements: *id004
|
81
|
-
prerelease: false
|
82
78
|
type: :development
|
79
|
+
requirement: *id004
|
80
|
+
prerelease: false
|
81
|
+
name: rspec-rails
|
83
82
|
- !ruby/object:Gem::Dependency
|
84
|
-
|
83
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
85
84
|
none: false
|
86
85
|
requirements:
|
87
86
|
- - ~>
|
@@ -92,12 +91,12 @@ dependencies:
|
|
92
91
|
- 2
|
93
92
|
- 4
|
94
93
|
version: 1.2.4
|
95
|
-
name: formtastic
|
96
|
-
version_requirements: *id005
|
97
|
-
prerelease: false
|
98
94
|
type: :development
|
95
|
+
requirement: *id005
|
96
|
+
prerelease: false
|
97
|
+
name: formtastic
|
99
98
|
- !ruby/object:Gem::Dependency
|
100
|
-
|
99
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
101
100
|
none: false
|
102
101
|
requirements:
|
103
102
|
- - ">="
|
@@ -106,12 +105,12 @@ dependencies:
|
|
106
105
|
segments:
|
107
106
|
- 0
|
108
107
|
version: "0"
|
109
|
-
name: sqlite3-ruby
|
110
|
-
version_requirements: *id006
|
111
|
-
prerelease: false
|
112
108
|
type: :development
|
109
|
+
requirement: *id006
|
110
|
+
prerelease: false
|
111
|
+
name: sqlite3-ruby
|
113
112
|
- !ruby/object:Gem::Dependency
|
114
|
-
|
113
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
115
114
|
none: false
|
116
115
|
requirements:
|
117
116
|
- - ">="
|
@@ -120,10 +119,10 @@ dependencies:
|
|
120
119
|
segments:
|
121
120
|
- 0
|
122
121
|
version: "0"
|
123
|
-
name: ruby-debug
|
124
|
-
version_requirements: *id007
|
125
|
-
prerelease: false
|
126
122
|
type: :development
|
123
|
+
requirement: *id007
|
124
|
+
prerelease: false
|
125
|
+
name: ruby-debug
|
127
126
|
description: A utility that adds class based enum functionality to ActiveRecord attributes
|
128
127
|
email: github@lette.us
|
129
128
|
executables: []
|
@@ -142,10 +141,9 @@ files:
|
|
142
141
|
- Rakefile
|
143
142
|
- VERSION
|
144
143
|
- classy_enum.gemspec
|
145
|
-
- generators/classy_enum_generator.rb
|
146
|
-
- generators/templates/enum.rb
|
147
144
|
- init.rb
|
148
145
|
- lib/classy_enum.rb
|
146
|
+
- lib/classy_enum/active_record.rb
|
149
147
|
- lib/classy_enum/attributes.rb
|
150
148
|
- lib/classy_enum/base.rb
|
151
149
|
- lib/classy_enum/class_methods.rb
|
@@ -153,11 +151,11 @@ files:
|
|
153
151
|
- lib/classy_enum/semantic_form_builder.rb
|
154
152
|
- lib/generators/classy_enum/classy_enum_generator.rb
|
155
153
|
- lib/generators/classy_enum/templates/enum.rb
|
154
|
+
- spec/active_record_spec.rb
|
156
155
|
- spec/classy_enum_attributes_spec.rb
|
157
156
|
- spec/classy_enum_semantic_form_builder_spec.rb
|
158
157
|
- spec/classy_enum_spec.rb
|
159
158
|
- spec/spec_helper.rb
|
160
|
-
has_rdoc: true
|
161
159
|
homepage: http://github.com/beerlington/classy_enum
|
162
160
|
licenses:
|
163
161
|
- MIT
|
@@ -187,7 +185,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
187
185
|
requirements: []
|
188
186
|
|
189
187
|
rubyforge_project:
|
190
|
-
rubygems_version: 1.
|
188
|
+
rubygems_version: 1.8.5
|
191
189
|
signing_key:
|
192
190
|
specification_version: 3
|
193
191
|
summary: A class based enumerator utility for Ruby on Rails
|