classy_enum 2.0.3 → 2.1.0

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