classy_enum 0.9.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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 %>