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 CHANGED
@@ -1,6 +1,6 @@
1
1
  source :rubygems
2
2
 
3
- gem 'rails', '>= 2.3.0'
3
+ gem 'rails', '~> 3.0.0'
4
4
 
5
5
  group :development do
6
6
  gem "jeweler", "~> 1.6.2"
@@ -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.9)
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.5.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.15)
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.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.8.7)
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.25)
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 (>= 2.3.0)
105
+ rails (~> 3.0.0)
106
106
  rcov
107
107
  rspec-rails (~> 2.6.1)
108
108
  ruby-debug
@@ -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:* Any version of Rails 2.3.x or Rails 3.0.x. (Older versions of Rails may work, but have not been tested)
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 and can be installed with: @gem install 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.9.1
1
+ 1.0.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{classy_enum}
8
- s.version = "0.9.1"
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 = ["Peter Brown"]
12
- s.date = %q{2011-06-07}
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 = ["MIT"]
46
- s.require_paths = ["lib"]
47
- s.rubygems_version = %q{1.3.9.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>, [">= 2.3.0"])
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>, [">= 2.3.0"])
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>, [">= 2.3.0"])
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"])
@@ -1,3 +1,4 @@
1
+ require "classy_enum/active_record"
1
2
  require "classy_enum/base"
2
3
  require "classy_enum/class_methods"
3
4
  require "classy_enum/instance_methods"
@@ -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
@@ -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: 57
4
+ hash: 23
5
5
  prerelease:
6
6
  segments:
7
- - 0
8
- - 9
9
7
  - 1
10
- version: 0.9.1
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-07 00:00:00 -04:00
19
- default_executable:
18
+ date: 2011-06-29 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
- requirement: &id001 !ruby/object:Gem::Requirement
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: 3
26
+ hash: 7
28
27
  segments:
29
- - 2
30
28
  - 3
31
29
  - 0
32
- version: 2.3.0
33
- name: rails
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
- requirement: &id002 !ruby/object:Gem::Requirement
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
- requirement: &id003 !ruby/object:Gem::Requirement
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
- requirement: &id004 !ruby/object:Gem::Requirement
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
- requirement: &id005 !ruby/object:Gem::Requirement
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
- requirement: &id006 !ruby/object:Gem::Requirement
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
- requirement: &id007 !ruby/object:Gem::Requirement
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.3.9.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
@@ -1,10 +0,0 @@
1
- class ClassyEnumGenerator < Rails::Generator::NamedBase
2
-
3
- def manifest
4
- record do |m|
5
- m.directory 'app/enums'
6
- m.template "enum.rb", "app/enums/#{file_name}.rb"
7
- end
8
- end
9
-
10
- end
@@ -1,7 +0,0 @@
1
- class <%= class_name %> < ClassyEnum::Base
2
- enum_classes <%= args.map {|a| ":#{a}"}.join(", ") %>
3
- end
4
- <% args.each do |arg| %>
5
- class <%= class_name + arg.camelize %> < <%= class_name %>
6
- end
7
- <% end %>