classy_enum 2.0.3 → 2.1.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/.gitignore ADDED
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.travis.yml CHANGED
@@ -1,3 +1,4 @@
1
+ language: ruby
1
2
  rvm:
2
3
  - 1.8.7
3
4
  - 1.9.2
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # ClassyEnum Changelog
2
2
 
3
+ ## 2.1.0
4
+
5
+ * Deprecating ClassyEnum::Base.enum_classes() (this is no longer needed)
6
+ * Deprecating ClassyEnum::Base.valid_options()(use all.join(', ') instead)
7
+ * Deprecating ClassEnum::Base.find() (use build() instead)
8
+
3
9
  ## 2.0.3
4
10
 
5
11
  * Fixes issue with validates_uniqueness_of when using an enum field as
data/Gemfile CHANGED
@@ -1,11 +1,3 @@
1
1
  source :rubygems
2
2
 
3
- gem 'rails', '>= 3.0.0'
4
-
5
- group :development do
6
- gem "jeweler", "~> 1.6.2"
7
- gem "rspec-rails", "~> 2.8.1"
8
- gem 'sqlite3'
9
- gem 'json', '~> 1.6.5'
10
- # gem 'ruby-debug19', :require => 'false'
11
- end
3
+ gemspec
data/README.md CHANGED
@@ -77,10 +77,10 @@ class Priority < ClassyEnum::Base
77
77
  end
78
78
  end
79
79
 
80
- class PriorityLow < priority
80
+ class PriorityLow < Priority
81
81
  end
82
82
 
83
- class PriorityMedium < priority
83
+ class PriorityMedium < Priority
84
84
  end
85
85
 
86
86
  class PriorityHigh < Priority
@@ -101,6 +101,9 @@ create_table "alarms", :force => true do |t|
101
101
  end
102
102
  ```
103
103
 
104
+ Note: Alternatively, you may use an enum type if your database supports it. See
105
+ [this issue](https://github.com/beerlington/classy_enum/issues/12) for more information.
106
+
104
107
  Then in my model I've added a line that calls `classy_enum_attr` with a single argument representing the enum I want to associate with my model. I am also delegating the send_email? method to my Priority enum class.
105
108
 
106
109
  ```ruby
@@ -132,24 +135,44 @@ The enum field works like any other model attribute. It can be mass-assigned usi
132
135
 
133
136
  ## Back reference to owning object
134
137
 
135
- In some cases you may want an enum class to be able to reference the owning object (an instance of the active record model). Think of it as a `belongs_to` relationship, where the enum can reference its owning object.
138
+ In some cases you may want an enum class to reference the owning object
139
+ (an instance of the active record model). Think of it as a `belongs_to`
140
+ relationship, where the enum can reference its owning object.
136
141
 
137
- In order to create the back reference, you must declare how you wish to refer to the owner using the `owner` class method.
142
+ By default, the back reference can be called using `owner`.
143
+ If you want to refer to the owner by a different name, you must explicitly declare
144
+ the owner name in the classy_enum parent class using the `owner` class method.
138
145
 
139
- For example:
146
+ Example using the default `owner` method:
140
147
 
141
148
  ```ruby
142
149
  class Priority < ClassyEnum::Base
143
150
  enum_classes :low, :medium, :high
144
- owner :alarm
145
151
  end
146
152
 
147
- class PriorityLow < priority
153
+ ...
154
+ # low and medium subclasses omitted
155
+ ...
156
+
157
+ class PriorityHigh < Priority
158
+ def send_email?
159
+ owner.enabled?
160
+ end
148
161
  end
162
+ ```
163
+
164
+ Example where the owner reference is explicitly declared:
149
165
 
150
- class PriorityMedium < priority
166
+ ```ruby
167
+ class Priority < ClassyEnum::Base
168
+ enum_classes :low, :medium, :high
169
+ owner :alarm
151
170
  end
152
171
 
172
+ ...
173
+ # low and medium subclasses omitted
174
+ ...
175
+
153
176
  class PriorityHigh < Priority
154
177
  def send_email?
155
178
  alarm.enabled?
@@ -157,7 +180,7 @@ class PriorityHigh < Priority
157
180
  end
158
181
  ```
159
182
 
160
- In the above example, high priority alarms are only emailed if the owning alarm is enabled.
183
+ In the above examples, high priority alarms are only emailed if the owning alarm is enabled.
161
184
 
162
185
  ```ruby
163
186
  @alarm = Alarm.create(:priority => :high, :enabled => true)
data/Rakefile CHANGED
@@ -1,45 +1,6 @@
1
- # encoding: utf-8
2
-
3
- require 'rubygems'
4
- require 'bundler'
5
- begin
6
- Bundler.setup(:default, :development)
7
- rescue Bundler::BundlerError => e
8
- $stderr.puts e.message
9
- $stderr.puts "Run `bundle install` to install missing gems"
10
- exit e.status_code
11
- end
12
- require 'rake'
13
-
14
- require 'jeweler'
15
- Jeweler::Tasks.new do |gem|
16
- # gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
17
- gem.name = "classy_enum"
18
- gem.summary = %Q{A class based enumerator utility for Ruby on Rails}
19
- gem.description = %Q{A utility that adds class based enum functionality to ActiveRecord attributes}
20
- gem.email = "github@lette.us"
21
- gem.homepage = "http://github.com/beerlington/classy_enum"
22
- gem.authors = ["Peter Brown"]
23
- gem.license = "MIT"
24
- # dependencies defined in Gemfile
25
- end
26
- Jeweler::RubygemsDotOrgTasks.new
27
-
28
- require 'rspec/core'
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
29
3
  require 'rspec/core/rake_task'
30
- RSpec::Core::RakeTask.new(:spec) do |spec|
31
- spec.pattern = FileList['spec/**/*_spec.rb']
32
- end
33
4
 
5
+ RSpec::Core::RakeTask.new(:spec)
34
6
  task :default => :spec
35
-
36
- require 'rake/rdoctask'
37
- Rake::RDocTask.new do |rdoc|
38
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
39
-
40
- rdoc.rdoc_dir = 'rdoc'
41
- rdoc.title = "classy_enum #{version}"
42
- rdoc.rdoc_files.include('README*')
43
- rdoc.rdoc_files.include('lib/**/*.rb')
44
- end
45
-
data/classy_enum.gemspec CHANGED
@@ -1,78 +1,23 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
1
  # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/classy_enum/version', __FILE__)
5
3
 
6
- Gem::Specification.new do |s|
7
- s.name = "classy_enum"
8
- s.version = "2.0.3"
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Peter Brown"]
6
+ gem.email = ["github@lette.us"]
7
+ gem.description = "A utility that adds class based enum functionality to ActiveRecord attributes"
8
+ gem.summary = "A class based enumerator utility for Ruby on Rails"
9
+ gem.homepage = "http://github.com/beerlington/classy_enum"
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 = "2012-04-24"
13
- s.description = "A utility that adds class based enum functionality to ActiveRecord attributes"
14
- s.email = "github@lette.us"
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.md"
18
- ]
19
- s.files = [
20
- ".document",
21
- ".rvmrc",
22
- ".travis.yml",
23
- "CHANGELOG.md",
24
- "Gemfile",
25
- "Gemfile.lock",
26
- "LICENSE",
27
- "README.md",
28
- "Rakefile",
29
- "VERSION",
30
- "classy_enum.gemspec",
31
- "gemfiles/Gemfile.rails-3.0.x",
32
- "gemfiles/Gemfile.rails-3.1.x",
33
- "gemfiles/Gemfile.rails-3.2.x",
34
- "init.rb",
35
- "lib/classy_enum.rb",
36
- "lib/classy_enum/attributes.rb",
37
- "lib/classy_enum/base.rb",
38
- "lib/classy_enum/class_methods.rb",
39
- "lib/classy_enum/instance_methods.rb",
40
- "lib/generators/classy_enum/classy_enum_generator.rb",
41
- "lib/generators/classy_enum/templates/enum.rb",
42
- "spec/active_record_spec.rb",
43
- "spec/classy_enum_attributes_spec.rb",
44
- "spec/classy_enum_owner_reference_spec.rb",
45
- "spec/classy_enum_spec.rb",
46
- "spec/spec_helper.rb"
47
- ]
48
- s.homepage = "http://github.com/beerlington/classy_enum"
49
- s.licenses = ["MIT"]
50
- s.require_paths = ["lib"]
51
- s.rubygems_version = "1.8.19"
52
- s.summary = "A class based enumerator utility for Ruby on Rails"
11
+ gem.files = `git ls-files`.split($\)
12
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
13
+ gem.name = "classy_enum"
14
+ gem.require_paths = ["lib"]
15
+ gem.version = ClassyEnum::VERSION
53
16
 
54
- if s.respond_to? :specification_version then
55
- s.specification_version = 3
17
+ gem.add_dependency('rails', '>= 3.0')
56
18
 
57
- if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
58
- s.add_runtime_dependency(%q<rails>, [">= 3.0.0"])
59
- s.add_development_dependency(%q<jeweler>, ["~> 1.6.2"])
60
- s.add_development_dependency(%q<rspec-rails>, ["~> 2.8.1"])
61
- s.add_development_dependency(%q<sqlite3>, [">= 0"])
62
- s.add_development_dependency(%q<json>, ["~> 1.6.5"])
63
- else
64
- s.add_dependency(%q<rails>, [">= 3.0.0"])
65
- s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
66
- s.add_dependency(%q<rspec-rails>, ["~> 2.8.1"])
67
- s.add_dependency(%q<sqlite3>, [">= 0"])
68
- s.add_dependency(%q<json>, ["~> 1.6.5"])
69
- end
70
- else
71
- s.add_dependency(%q<rails>, [">= 3.0.0"])
72
- s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
73
- s.add_dependency(%q<rspec-rails>, ["~> 2.8.1"])
74
- s.add_dependency(%q<sqlite3>, [">= 0"])
75
- s.add_dependency(%q<json>, ["~> 1.6.5"])
76
- end
77
- end
19
+ gem.add_development_dependency('rspec-rails', '~> 2.10.0')
20
+ gem.add_development_dependency('sqlite3', '~> 1.3.6')
21
+ gem.add_development_dependency('json', '~> 1.6.5')
78
22
 
23
+ end
@@ -18,6 +18,8 @@ module ClassyEnum
18
18
  # Priority.build(:low) or PriorityLow.new
19
19
  #
20
20
  def enum_classes(*enums)
21
+ ActiveSupport::Deprecation.warn('enum_classes is deprecated, and will be removed in ClassyEnum 3.0. It is no longer needed.', caller)
22
+
21
23
  self.class_eval do
22
24
  class_attribute :enum_options, :base_class
23
25
 
@@ -68,7 +70,10 @@ module ClassyEnum
68
70
  object
69
71
  end
70
72
 
71
- alias :find :build
73
+ def find(value, options={})
74
+ ActiveSupport::Deprecation.warn("find is deprecated, and will be removed in ClassyEnum 3.0. Use build(:member) instead.", caller)
75
+ build(value, options)
76
+ end
72
77
 
73
78
  # Returns an array of all instantiated enums
74
79
  #
@@ -108,6 +113,7 @@ module ClassyEnum
108
113
  #
109
114
  # Priority.valid_options # => "low, medium, high"
110
115
  def valid_options
116
+ ActiveSupport::Deprecation.warn("valid_options is deprecated, and will be removed in ClassyEnum 3.0. Use all.join(', ') instead.", caller)
111
117
  self.enum_options.map(&:to_s).join(', ')
112
118
  end
113
119
 
@@ -0,0 +1,3 @@
1
+ module ClassyEnum
2
+ VERSION = "2.1.0"
3
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: classy_enum
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.1.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-04-24 00:00:00.000000000Z
12
+ date: 2012-07-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: 3.0.0
21
+ version: '3.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,23 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
- version: 3.0.0
30
- - !ruby/object:Gem::Dependency
31
- name: jeweler
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ~>
36
- - !ruby/object:Gem::Version
37
- version: 1.6.2
38
- type: :development
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ~>
44
- - !ruby/object:Gem::Version
45
- version: 1.6.2
29
+ version: '3.0'
46
30
  - !ruby/object:Gem::Dependency
47
31
  name: rspec-rails
48
32
  requirement: !ruby/object:Gem::Requirement
@@ -50,7 +34,7 @@ dependencies:
50
34
  requirements:
51
35
  - - ~>
52
36
  - !ruby/object:Gem::Version
53
- version: 2.8.1
37
+ version: 2.10.0
54
38
  type: :development
55
39
  prerelease: false
56
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,23 +42,23 @@ dependencies:
58
42
  requirements:
59
43
  - - ~>
60
44
  - !ruby/object:Gem::Version
61
- version: 2.8.1
45
+ version: 2.10.0
62
46
  - !ruby/object:Gem::Dependency
63
47
  name: sqlite3
64
48
  requirement: !ruby/object:Gem::Requirement
65
49
  none: false
66
50
  requirements:
67
- - - ! '>='
51
+ - - ~>
68
52
  - !ruby/object:Gem::Version
69
- version: '0'
53
+ version: 1.3.6
70
54
  type: :development
71
55
  prerelease: false
72
56
  version_requirements: !ruby/object:Gem::Requirement
73
57
  none: false
74
58
  requirements:
75
- - - ! '>='
59
+ - - ~>
76
60
  - !ruby/object:Gem::Version
77
- version: '0'
61
+ version: 1.3.6
78
62
  - !ruby/object:Gem::Dependency
79
63
  name: json
80
64
  requirement: !ruby/object:Gem::Requirement
@@ -92,23 +76,19 @@ dependencies:
92
76
  - !ruby/object:Gem::Version
93
77
  version: 1.6.5
94
78
  description: A utility that adds class based enum functionality to ActiveRecord attributes
95
- email: github@lette.us
79
+ email:
80
+ - github@lette.us
96
81
  executables: []
97
82
  extensions: []
98
- extra_rdoc_files:
99
- - LICENSE
100
- - README.md
83
+ extra_rdoc_files: []
101
84
  files:
102
- - .document
103
- - .rvmrc
85
+ - .gitignore
104
86
  - .travis.yml
105
87
  - CHANGELOG.md
106
88
  - Gemfile
107
- - Gemfile.lock
108
89
  - LICENSE
109
90
  - README.md
110
91
  - Rakefile
111
- - VERSION
112
92
  - classy_enum.gemspec
113
93
  - gemfiles/Gemfile.rails-3.0.x
114
94
  - gemfiles/Gemfile.rails-3.1.x
@@ -119,6 +99,7 @@ files:
119
99
  - lib/classy_enum/base.rb
120
100
  - lib/classy_enum/class_methods.rb
121
101
  - lib/classy_enum/instance_methods.rb
102
+ - lib/classy_enum/version.rb
122
103
  - lib/generators/classy_enum/classy_enum_generator.rb
123
104
  - lib/generators/classy_enum/templates/enum.rb
124
105
  - spec/active_record_spec.rb
@@ -127,8 +108,7 @@ files:
127
108
  - spec/classy_enum_spec.rb
128
109
  - spec/spec_helper.rb
129
110
  homepage: http://github.com/beerlington/classy_enum
130
- licenses:
131
- - MIT
111
+ licenses: []
132
112
  post_install_message:
133
113
  rdoc_options: []
134
114
  require_paths:
@@ -141,17 +121,25 @@ required_ruby_version: !ruby/object:Gem::Requirement
141
121
  version: '0'
142
122
  segments:
143
123
  - 0
144
- hash: 3374934930458401417
124
+ hash: -4601389622693505403
145
125
  required_rubygems_version: !ruby/object:Gem::Requirement
146
126
  none: false
147
127
  requirements:
148
128
  - - ! '>='
149
129
  - !ruby/object:Gem::Version
150
130
  version: '0'
131
+ segments:
132
+ - 0
133
+ hash: -4601389622693505403
151
134
  requirements: []
152
135
  rubyforge_project:
153
- rubygems_version: 1.8.19
136
+ rubygems_version: 1.8.24
154
137
  signing_key:
155
138
  specification_version: 3
156
139
  summary: A class based enumerator utility for Ruby on Rails
157
- test_files: []
140
+ test_files:
141
+ - spec/active_record_spec.rb
142
+ - spec/classy_enum_attributes_spec.rb
143
+ - spec/classy_enum_owner_reference_spec.rb
144
+ - spec/classy_enum_spec.rb
145
+ - spec/spec_helper.rb
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
data/.rvmrc DELETED
@@ -1 +0,0 @@
1
- rvm use 1.9.2
data/Gemfile.lock DELETED
@@ -1,109 +0,0 @@
1
- GEM
2
- remote: http://rubygems.org/
3
- specs:
4
- actionmailer (3.2.3)
5
- actionpack (= 3.2.3)
6
- mail (~> 2.4.4)
7
- actionpack (3.2.3)
8
- activemodel (= 3.2.3)
9
- activesupport (= 3.2.3)
10
- builder (~> 3.0.0)
11
- erubis (~> 2.7.0)
12
- journey (~> 1.0.1)
13
- rack (~> 1.4.0)
14
- rack-cache (~> 1.2)
15
- rack-test (~> 0.6.1)
16
- sprockets (~> 2.1.2)
17
- activemodel (3.2.3)
18
- activesupport (= 3.2.3)
19
- builder (~> 3.0.0)
20
- activerecord (3.2.3)
21
- activemodel (= 3.2.3)
22
- activesupport (= 3.2.3)
23
- arel (~> 3.0.2)
24
- tzinfo (~> 0.3.29)
25
- activeresource (3.2.3)
26
- activemodel (= 3.2.3)
27
- activesupport (= 3.2.3)
28
- activesupport (3.2.3)
29
- i18n (~> 0.6)
30
- multi_json (~> 1.0)
31
- arel (3.0.2)
32
- builder (3.0.0)
33
- diff-lcs (1.1.3)
34
- erubis (2.7.0)
35
- git (1.2.5)
36
- hike (1.2.1)
37
- i18n (0.6.0)
38
- jeweler (1.6.4)
39
- bundler (~> 1.0)
40
- git (>= 1.2.5)
41
- rake
42
- journey (1.0.3)
43
- json (1.6.6)
44
- mail (2.4.4)
45
- i18n (>= 0.4.0)
46
- mime-types (~> 1.16)
47
- treetop (~> 1.4.8)
48
- mime-types (1.18)
49
- multi_json (1.3.2)
50
- polyglot (0.3.3)
51
- rack (1.4.1)
52
- rack-cache (1.2)
53
- rack (>= 0.4)
54
- rack-ssl (1.3.2)
55
- rack
56
- rack-test (0.6.1)
57
- rack (>= 1.0)
58
- rails (3.2.3)
59
- actionmailer (= 3.2.3)
60
- actionpack (= 3.2.3)
61
- activerecord (= 3.2.3)
62
- activeresource (= 3.2.3)
63
- activesupport (= 3.2.3)
64
- bundler (~> 1.0)
65
- railties (= 3.2.3)
66
- railties (3.2.3)
67
- actionpack (= 3.2.3)
68
- activesupport (= 3.2.3)
69
- rack-ssl (~> 1.3.2)
70
- rake (>= 0.8.7)
71
- rdoc (~> 3.4)
72
- thor (~> 0.14.6)
73
- rake (0.9.2.2)
74
- rdoc (3.12)
75
- json (~> 1.4)
76
- rspec (2.8.0)
77
- rspec-core (~> 2.8.0)
78
- rspec-expectations (~> 2.8.0)
79
- rspec-mocks (~> 2.8.0)
80
- rspec-core (2.8.0)
81
- rspec-expectations (2.8.0)
82
- diff-lcs (~> 1.1.2)
83
- rspec-mocks (2.8.0)
84
- rspec-rails (2.8.1)
85
- actionpack (>= 3.0)
86
- activesupport (>= 3.0)
87
- railties (>= 3.0)
88
- rspec (~> 2.8.0)
89
- sprockets (2.1.2)
90
- hike (~> 1.2)
91
- rack (~> 1.0)
92
- tilt (~> 1.1, != 1.3.0)
93
- sqlite3 (1.3.5)
94
- thor (0.14.6)
95
- tilt (1.3.3)
96
- treetop (1.4.10)
97
- polyglot
98
- polyglot (>= 0.3.1)
99
- tzinfo (0.3.33)
100
-
101
- PLATFORMS
102
- ruby
103
-
104
- DEPENDENCIES
105
- jeweler (~> 1.6.2)
106
- json (~> 1.6.5)
107
- rails (>= 3.0.0)
108
- rspec-rails (~> 2.8.1)
109
- sqlite3
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 2.0.3