classy_enum 1.0.0 → 1.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/.rvmrc +1 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +15 -8
- data/README.textile +7 -3
- data/VERSION +1 -1
- data/classy_enum.gemspec +7 -6
- data/lib/classy_enum.rb +8 -5
- data/lib/classy_enum/attributes.rb +0 -2
- data/lib/classy_enum/base.rb +4 -48
- data/lib/classy_enum/class_methods.rb +41 -0
- data/lib/classy_enum/instance_methods.rb +24 -6
- data/spec/active_record_spec.rb +15 -2
- data/spec/classy_enum_migration_spec.rb +0 -0
- data/spec/classy_enum_spec.rb +21 -68
- metadata +72 -114
- data/lib/classy_enum/active_record.rb +0 -15
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm use 1.9.2
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -28,9 +28,10 @@ GEM
|
|
28
28
|
activemodel (= 3.0.5)
|
29
29
|
activesupport (= 3.0.5)
|
30
30
|
activesupport (3.0.5)
|
31
|
+
archive-tar-minitar (0.5.2)
|
31
32
|
arel (2.0.10)
|
32
33
|
builder (2.1.2)
|
33
|
-
columnize (0.3.
|
34
|
+
columnize (0.3.4)
|
34
35
|
diff-lcs (1.1.2)
|
35
36
|
erubis (2.6.6)
|
36
37
|
abstract (>= 1.0.0)
|
@@ -44,7 +45,8 @@ GEM
|
|
44
45
|
bundler (~> 1.0)
|
45
46
|
git (>= 1.2.5)
|
46
47
|
rake
|
47
|
-
|
48
|
+
linecache19 (0.5.12)
|
49
|
+
ruby_core_source (>= 0.1.4)
|
48
50
|
mail (2.2.19)
|
49
51
|
activesupport (>= 2.3.6)
|
50
52
|
i18n (>= 0.4.0)
|
@@ -85,11 +87,16 @@ GEM
|
|
85
87
|
activesupport (~> 3.0)
|
86
88
|
railties (~> 3.0)
|
87
89
|
rspec (~> 2.6.0)
|
88
|
-
ruby-debug (0.
|
89
|
-
columnize (>= 0.1)
|
90
|
-
|
91
|
-
|
92
|
-
|
90
|
+
ruby-debug-base19 (0.11.25)
|
91
|
+
columnize (>= 0.3.1)
|
92
|
+
linecache19 (>= 0.5.11)
|
93
|
+
ruby_core_source (>= 0.1.4)
|
94
|
+
ruby-debug19 (0.11.6)
|
95
|
+
columnize (>= 0.3.1)
|
96
|
+
linecache19 (>= 0.5.11)
|
97
|
+
ruby-debug-base19 (>= 0.11.19)
|
98
|
+
ruby_core_source (0.1.5)
|
99
|
+
archive-tar-minitar (>= 0.5.2)
|
93
100
|
sqlite3-ruby (1.3.1)
|
94
101
|
thor (0.14.6)
|
95
102
|
treetop (1.4.9)
|
@@ -105,5 +112,5 @@ DEPENDENCIES
|
|
105
112
|
rails (~> 3.0.0)
|
106
113
|
rcov
|
107
114
|
rspec-rails (~> 2.6.1)
|
108
|
-
ruby-
|
115
|
+
ruby-debug19
|
109
116
|
sqlite3-ruby
|
data/README.textile
CHANGED
@@ -2,11 +2,15 @@ h1. classy_enum
|
|
2
2
|
|
3
3
|
ClassyEnum is a Ruby on Rails gem that adds class-based enumerator functionality to ActiveRecord attributes.
|
4
4
|
|
5
|
-
h2.
|
5
|
+
h2. Rails & Ruby Versions Supported
|
6
6
|
|
7
|
-
*Rails:*
|
7
|
+
*Rails:*
|
8
8
|
|
9
|
-
*
|
9
|
+
* 3.1.0.rc: Mostly functional, known issue with using uniqueness validation with ClassyEnum attribute as a scope
|
10
|
+
* 3.0.0 - 3.0.9: Fully tested in a production application, no known issues
|
11
|
+
* 2.3.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
|
12
|
+
|
13
|
+
*Ruby:* Ruby 1.8.7 and 1.9.2 both tested and supported
|
10
14
|
|
11
15
|
h2. Installation
|
12
16
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.1.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 = "1.
|
8
|
+
s.version = "1.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = [%q{Peter Brown}]
|
12
|
-
s.date = %q{2011-
|
12
|
+
s.date = %q{2011-07-25}
|
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 = [
|
@@ -18,6 +18,7 @@ Gem::Specification.new do |s|
|
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
|
+
".rvmrc",
|
21
22
|
"Gemfile",
|
22
23
|
"Gemfile.lock",
|
23
24
|
"LICENSE",
|
@@ -27,7 +28,6 @@ Gem::Specification.new do |s|
|
|
27
28
|
"classy_enum.gemspec",
|
28
29
|
"init.rb",
|
29
30
|
"lib/classy_enum.rb",
|
30
|
-
"lib/classy_enum/active_record.rb",
|
31
31
|
"lib/classy_enum/attributes.rb",
|
32
32
|
"lib/classy_enum/base.rb",
|
33
33
|
"lib/classy_enum/class_methods.rb",
|
@@ -37,6 +37,7 @@ Gem::Specification.new do |s|
|
|
37
37
|
"lib/generators/classy_enum/templates/enum.rb",
|
38
38
|
"spec/active_record_spec.rb",
|
39
39
|
"spec/classy_enum_attributes_spec.rb",
|
40
|
+
"spec/classy_enum_migration_spec.rb",
|
40
41
|
"spec/classy_enum_semantic_form_builder_spec.rb",
|
41
42
|
"spec/classy_enum_spec.rb",
|
42
43
|
"spec/spec_helper.rb"
|
@@ -57,7 +58,7 @@ Gem::Specification.new do |s|
|
|
57
58
|
s.add_development_dependency(%q<rspec-rails>, ["~> 2.6.1"])
|
58
59
|
s.add_development_dependency(%q<formtastic>, ["~> 1.2.4"])
|
59
60
|
s.add_development_dependency(%q<sqlite3-ruby>, [">= 0"])
|
60
|
-
s.add_development_dependency(%q<ruby-
|
61
|
+
s.add_development_dependency(%q<ruby-debug19>, [">= 0"])
|
61
62
|
else
|
62
63
|
s.add_dependency(%q<rails>, ["~> 3.0.0"])
|
63
64
|
s.add_dependency(%q<jeweler>, ["~> 1.6.2"])
|
@@ -65,7 +66,7 @@ Gem::Specification.new do |s|
|
|
65
66
|
s.add_dependency(%q<rspec-rails>, ["~> 2.6.1"])
|
66
67
|
s.add_dependency(%q<formtastic>, ["~> 1.2.4"])
|
67
68
|
s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
|
68
|
-
s.add_dependency(%q<ruby-
|
69
|
+
s.add_dependency(%q<ruby-debug19>, [">= 0"])
|
69
70
|
end
|
70
71
|
else
|
71
72
|
s.add_dependency(%q<rails>, ["~> 3.0.0"])
|
@@ -74,7 +75,7 @@ Gem::Specification.new do |s|
|
|
74
75
|
s.add_dependency(%q<rspec-rails>, ["~> 2.6.1"])
|
75
76
|
s.add_dependency(%q<formtastic>, ["~> 1.2.4"])
|
76
77
|
s.add_dependency(%q<sqlite3-ruby>, [">= 0"])
|
77
|
-
s.add_dependency(%q<ruby-
|
78
|
+
s.add_dependency(%q<ruby-debug19>, [">= 0"])
|
78
79
|
end
|
79
80
|
end
|
80
81
|
|
data/lib/classy_enum.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
module ClassyEnum
|
2
|
+
autoload :Base, 'classy_enum/base'
|
3
|
+
autoload :InstanceMethods, 'classy_enum/instance_methods'
|
4
|
+
autoload :ClassMethods, 'classy_enum/class_methods'
|
5
|
+
autoload :Attributes, 'classy_enum/attributes'
|
6
|
+
end
|
7
|
+
|
8
|
+
ActiveRecord::Base.send :extend, ClassyEnum::Attributes
|
data/lib/classy_enum/base.rb
CHANGED
@@ -1,52 +1,8 @@
|
|
1
1
|
module ClassyEnum
|
2
|
-
|
3
2
|
class Base
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
#
|
9
|
-
# ==== Example
|
10
|
-
# # Define an enum called Priority with three child classes
|
11
|
-
# class Priority < ClassyEnum::Base
|
12
|
-
# enum_classes :low, :medium, :high
|
13
|
-
# end
|
14
|
-
#
|
15
|
-
# The child classes will be defined with the following constants:
|
16
|
-
# PriorityLow, PriorityMedium, and PriorityHigh
|
17
|
-
#
|
18
|
-
# These child classes can be instantiated with either:
|
19
|
-
# Priority.build(:low) or PriorityLow.new
|
20
|
-
#
|
21
|
-
def self.enum_classes(*options)
|
22
|
-
self.const_set("OPTIONS", options) unless self.const_defined? "OPTIONS"
|
23
|
-
|
24
|
-
self.extend ClassyEnum::ClassMethods
|
25
|
-
self.send(:include, ClassyEnum::InstanceMethods)
|
26
|
-
self.send(:include, Comparable)
|
27
|
-
|
28
|
-
options.each_with_index do |option, index|
|
29
|
-
|
30
|
-
klass = Class.new(self) do
|
31
|
-
@index = index + 1
|
32
|
-
@option = option
|
33
|
-
|
34
|
-
def initialize
|
35
|
-
@to_s = self.class.instance_variable_get('@option').to_s
|
36
|
-
@index = self.class.instance_variable_get('@index')
|
37
|
-
end
|
38
|
-
|
39
|
-
# Define methods to test member type (ie member.option?)
|
40
|
-
options.each do |o|
|
41
|
-
self.send(:define_method, "#{o}?", lambda { o == option })
|
42
|
-
end
|
43
|
-
|
44
|
-
end
|
45
|
-
|
46
|
-
klass_name = "#{self}#{option.to_s.camelize}"
|
47
|
-
Object.const_set(klass_name, klass) unless Object.const_defined? klass_name
|
48
|
-
end
|
49
|
-
end
|
3
|
+
extend ClassyEnum::ClassMethods
|
4
|
+
include ClassyEnum::InstanceMethods
|
5
|
+
include Comparable
|
6
|
+
include ActiveModel::AttributeMethods
|
50
7
|
end
|
51
|
-
|
52
8
|
end
|
@@ -1,6 +1,47 @@
|
|
1
1
|
module ClassyEnum
|
2
2
|
module ClassMethods
|
3
3
|
|
4
|
+
# Macro for defining enum members within a ClassyEnum class.
|
5
|
+
# Accepts an array of symbols or strings which are converted to
|
6
|
+
# ClassyEnum members as descents of their parent class.
|
7
|
+
#
|
8
|
+
# ==== Example
|
9
|
+
# # Define an enum called Priority with three child classes
|
10
|
+
# class Priority < ClassyEnum::Base
|
11
|
+
# enum_classes :low, :medium, :high
|
12
|
+
# end
|
13
|
+
#
|
14
|
+
# The child classes will be defined with the following constants:
|
15
|
+
# PriorityLow, PriorityMedium, and PriorityHigh
|
16
|
+
#
|
17
|
+
# These child classes can be instantiated with either:
|
18
|
+
# Priority.build(:low) or PriorityLow.new
|
19
|
+
#
|
20
|
+
def enum_classes(*options)
|
21
|
+
self.const_set("OPTIONS", options) unless self.const_defined? "OPTIONS"
|
22
|
+
|
23
|
+
options.each_with_index do |option, index|
|
24
|
+
|
25
|
+
klass = Class.new(self) do
|
26
|
+
@index = index + 1
|
27
|
+
@option = option
|
28
|
+
|
29
|
+
# Use ActiveModel::AttributeMethods to define attribute? methods
|
30
|
+
attribute_method_suffix '?'
|
31
|
+
define_attribute_methods options
|
32
|
+
|
33
|
+
def initialize
|
34
|
+
@to_s = self.class.instance_variable_get('@option').to_s
|
35
|
+
@index = self.class.instance_variable_get('@index')
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
klass_name = "#{self}#{option.to_s.camelize}"
|
41
|
+
Object.const_set(klass_name, klass) unless Object.const_defined? klass_name
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
4
45
|
# Build a new ClassyEnum child instance
|
5
46
|
#
|
6
47
|
# ==== Example
|
@@ -79,8 +79,20 @@ module ClassyEnum
|
|
79
79
|
@index <=> other.index
|
80
80
|
end
|
81
81
|
|
82
|
+
# Used by ActiveRecord::PredicateBuilder when building from a hash
|
83
|
+
def is_a?(klass)
|
84
|
+
return true if klass == ActiveRecord::Base
|
85
|
+
super(klass)
|
86
|
+
end
|
87
|
+
|
88
|
+
# Used by ActiveRecord::PredicateBuilder when building from a hash
|
89
|
+
def id
|
90
|
+
to_s
|
91
|
+
end
|
92
|
+
|
93
|
+
protected
|
94
|
+
|
82
95
|
# Determine if the enum attribute is a particular member.
|
83
|
-
# Accepts a symbol or string representing a member
|
84
96
|
#
|
85
97
|
# ==== Example
|
86
98
|
# # Create an Enum with some elements
|
@@ -94,11 +106,17 @@ module ClassyEnum
|
|
94
106
|
# end
|
95
107
|
#
|
96
108
|
# @dog = Dog.new(:breed => :snoop)
|
97
|
-
# @dog.breed.
|
98
|
-
# @dog.breed.
|
99
|
-
|
100
|
-
|
101
|
-
|
109
|
+
# @dog.breed.snoop? # => true
|
110
|
+
# @dog.breed.golden_retriever? # => false
|
111
|
+
def attribute?(attribute)
|
112
|
+
to_s == attribute
|
113
|
+
end
|
114
|
+
|
115
|
+
private
|
116
|
+
|
117
|
+
# Used by attribute methods
|
118
|
+
def attributes
|
119
|
+
[]
|
102
120
|
end
|
103
121
|
|
104
122
|
end
|
data/spec/active_record_spec.rb
CHANGED
@@ -7,16 +7,29 @@ class ActiveDog < ActiveRecord::Base
|
|
7
7
|
:presence => true,
|
8
8
|
:uniqueness => { :scope => [:breed] }
|
9
9
|
|
10
|
+
scope :goldens, where(:breed => 'golden_retriever')
|
11
|
+
|
10
12
|
end
|
11
13
|
|
12
14
|
describe ActiveDog do
|
13
15
|
before do
|
14
|
-
ActiveDog.
|
15
|
-
ActiveDog.create!(:name => '
|
16
|
+
ActiveDog.destroy_all
|
17
|
+
@golden = ActiveDog.create!(:name => 'Sebastian', :breed => :golden_retriever)
|
18
|
+
@husky = ActiveDog.create!(:name => 'Sirius', :breed => :husky)
|
16
19
|
end
|
17
20
|
|
18
21
|
it 'should allow validation with classy enum scope' do
|
19
22
|
dog = ActiveDog.new(:name => 'Sirius', :breed => :golden_retriever)
|
20
23
|
dog.should be_valid
|
24
|
+
dog.breed.golden_retriever?.should be_true
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should know all dogs' do
|
28
|
+
ActiveDog.all.should include(@golden, @husky)
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'should have a working scope' do
|
32
|
+
ActiveDog.goldens.should include(@golden)
|
33
|
+
ActiveDog.goldens.should_not include(@husky)
|
21
34
|
end
|
22
35
|
end
|
File without changes
|
data/spec/classy_enum_spec.rb
CHANGED
@@ -56,21 +56,13 @@ describe "A ClassyEnum Descendent" do
|
|
56
56
|
end
|
57
57
|
|
58
58
|
describe "A collection of ClassyEnums" do
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
@three = TestEnum.build(:three)
|
59
|
+
let(:one) { TestEnum.build(:one) }
|
60
|
+
let(:two) { TestEnum.build(:two) }
|
61
|
+
let(:three) { TestEnum.build(:three) }
|
63
62
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
it "should sort the enums" do
|
68
|
-
@unordered.sort.should == [@one, @two, @three]
|
69
|
-
end
|
70
|
-
|
71
|
-
it "should find the max enum based on its order" do
|
72
|
-
@unordered.max.should == @three
|
73
|
-
end
|
63
|
+
subject { [one, three, two] }
|
64
|
+
its(:sort) { should eql([one, two, three]) }
|
65
|
+
its(:max) { should eql(three) }
|
74
66
|
end
|
75
67
|
|
76
68
|
describe "A ClassyEnum element" do
|
@@ -88,63 +80,24 @@ describe "A ClassyEnum element" do
|
|
88
80
|
end
|
89
81
|
|
90
82
|
describe "A ClassyEnum instance" do
|
91
|
-
|
92
|
-
|
93
|
-
it
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
end
|
104
|
-
|
105
|
-
it "should return true for one?" do
|
106
|
-
@enum.one?.should be_true
|
107
|
-
end
|
108
|
-
|
109
|
-
it "should return false for two?" do
|
110
|
-
@enum.two?.should be_false
|
111
|
-
end
|
112
|
-
|
113
|
-
it "should be a TestEnum" do
|
114
|
-
@enum.should be_a(TestEnum)
|
115
|
-
end
|
116
|
-
|
117
|
-
it "should have an index" do
|
118
|
-
@enum.index.should == 1
|
119
|
-
end
|
120
|
-
|
121
|
-
it "should index as to_i" do
|
122
|
-
@enum.to_i.should == 1
|
123
|
-
end
|
124
|
-
|
125
|
-
it "should convert to a string" do
|
126
|
-
@enum.to_s.should == "one"
|
127
|
-
end
|
128
|
-
|
129
|
-
it "should convert to a symbol" do
|
130
|
-
@enum.to_sym.should == :one
|
131
|
-
end
|
132
|
-
|
133
|
-
it "should have a name" do
|
134
|
-
@enum.name.should == "One"
|
135
|
-
end
|
136
|
-
|
137
|
-
it "should inherit the default instance methods" do
|
138
|
-
@enum.test_instance_method?.should be_false
|
139
|
-
end
|
83
|
+
subject { TestEnum.build(:one) }
|
84
|
+
|
85
|
+
it { should be_a(TestEnum) }
|
86
|
+
its(:class) { should eql(TestEnumOne) }
|
87
|
+
its(:one?) { should be_true }
|
88
|
+
its(:two?) { should be_false }
|
89
|
+
its(:index) { should eql(1) }
|
90
|
+
its(:to_i) { should eql(1) }
|
91
|
+
its(:to_s) { should eql('one') }
|
92
|
+
its(:to_sym) { should be(:one) }
|
93
|
+
its(:name) { should eql('One') }
|
94
|
+
its(:test_instance_method?) { should be_false }
|
140
95
|
end
|
141
96
|
|
142
|
-
describe "
|
143
|
-
|
97
|
+
describe "A ClassyEnum that overrides values" do
|
98
|
+
subject { TestEnum.build(:two) }
|
144
99
|
|
145
|
-
|
146
|
-
@enum.test_instance_method?.should be_true
|
147
|
-
end
|
100
|
+
its(:test_instance_method?) { should be_true }
|
148
101
|
|
149
102
|
it "should override the default class methods" do
|
150
103
|
TestEnumTwo.test_class_method?.should be_true
|
metadata
CHANGED
@@ -1,139 +1,103 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: classy_enum
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 0
|
9
|
-
- 0
|
10
|
-
version: 1.0.0
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Peter Brown
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
12
|
+
date: 2011-07-25 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: rails
|
16
|
+
requirement: &2155094960 !ruby/object:Gem::Requirement
|
22
17
|
none: false
|
23
|
-
requirements:
|
18
|
+
requirements:
|
24
19
|
- - ~>
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
hash: 7
|
27
|
-
segments:
|
28
|
-
- 3
|
29
|
-
- 0
|
30
|
-
- 0
|
20
|
+
- !ruby/object:Gem::Version
|
31
21
|
version: 3.0.0
|
32
22
|
type: :runtime
|
33
|
-
requirement: *id001
|
34
23
|
prerelease: false
|
35
|
-
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
|
24
|
+
version_requirements: *2155094960
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: jeweler
|
27
|
+
requirement: &2155094380 !ruby/object:Gem::Requirement
|
38
28
|
none: false
|
39
|
-
requirements:
|
29
|
+
requirements:
|
40
30
|
- - ~>
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
hash: 11
|
43
|
-
segments:
|
44
|
-
- 1
|
45
|
-
- 6
|
46
|
-
- 2
|
31
|
+
- !ruby/object:Gem::Version
|
47
32
|
version: 1.6.2
|
48
33
|
type: :development
|
49
|
-
requirement: *id002
|
50
34
|
prerelease: false
|
51
|
-
|
52
|
-
- !ruby/object:Gem::Dependency
|
53
|
-
|
35
|
+
version_requirements: *2155094380
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rcov
|
38
|
+
requirement: &2155093860 !ruby/object:Gem::Requirement
|
54
39
|
none: false
|
55
|
-
requirements:
|
56
|
-
- -
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
|
59
|
-
segments:
|
60
|
-
- 0
|
61
|
-
version: "0"
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
62
44
|
type: :development
|
63
|
-
requirement: *id003
|
64
45
|
prerelease: false
|
65
|
-
|
66
|
-
- !ruby/object:Gem::Dependency
|
67
|
-
|
46
|
+
version_requirements: *2155093860
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: rspec-rails
|
49
|
+
requirement: &2155093300 !ruby/object:Gem::Requirement
|
68
50
|
none: false
|
69
|
-
requirements:
|
51
|
+
requirements:
|
70
52
|
- - ~>
|
71
|
-
- !ruby/object:Gem::Version
|
72
|
-
hash: 21
|
73
|
-
segments:
|
74
|
-
- 2
|
75
|
-
- 6
|
76
|
-
- 1
|
53
|
+
- !ruby/object:Gem::Version
|
77
54
|
version: 2.6.1
|
78
55
|
type: :development
|
79
|
-
requirement: *id004
|
80
56
|
prerelease: false
|
81
|
-
|
82
|
-
- !ruby/object:Gem::Dependency
|
83
|
-
|
57
|
+
version_requirements: *2155093300
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: formtastic
|
60
|
+
requirement: &2155092680 !ruby/object:Gem::Requirement
|
84
61
|
none: false
|
85
|
-
requirements:
|
62
|
+
requirements:
|
86
63
|
- - ~>
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
hash: 23
|
89
|
-
segments:
|
90
|
-
- 1
|
91
|
-
- 2
|
92
|
-
- 4
|
64
|
+
- !ruby/object:Gem::Version
|
93
65
|
version: 1.2.4
|
94
66
|
type: :development
|
95
|
-
requirement: *id005
|
96
67
|
prerelease: false
|
97
|
-
|
98
|
-
- !ruby/object:Gem::Dependency
|
99
|
-
|
68
|
+
version_requirements: *2155092680
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: sqlite3-ruby
|
71
|
+
requirement: &2155092060 !ruby/object:Gem::Requirement
|
100
72
|
none: false
|
101
|
-
requirements:
|
102
|
-
- -
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
|
105
|
-
segments:
|
106
|
-
- 0
|
107
|
-
version: "0"
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
108
77
|
type: :development
|
109
|
-
requirement: *id006
|
110
78
|
prerelease: false
|
111
|
-
|
112
|
-
- !ruby/object:Gem::Dependency
|
113
|
-
|
79
|
+
version_requirements: *2155092060
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: ruby-debug19
|
82
|
+
requirement: &2155091460 !ruby/object:Gem::Requirement
|
114
83
|
none: false
|
115
|
-
requirements:
|
116
|
-
- -
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
|
119
|
-
segments:
|
120
|
-
- 0
|
121
|
-
version: "0"
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
122
88
|
type: :development
|
123
|
-
requirement: *id007
|
124
89
|
prerelease: false
|
125
|
-
|
90
|
+
version_requirements: *2155091460
|
126
91
|
description: A utility that adds class based enum functionality to ActiveRecord attributes
|
127
92
|
email: github@lette.us
|
128
93
|
executables: []
|
129
|
-
|
130
94
|
extensions: []
|
131
|
-
|
132
|
-
extra_rdoc_files:
|
95
|
+
extra_rdoc_files:
|
133
96
|
- LICENSE
|
134
97
|
- README.textile
|
135
|
-
files:
|
98
|
+
files:
|
136
99
|
- .document
|
100
|
+
- .rvmrc
|
137
101
|
- Gemfile
|
138
102
|
- Gemfile.lock
|
139
103
|
- LICENSE
|
@@ -143,7 +107,6 @@ files:
|
|
143
107
|
- classy_enum.gemspec
|
144
108
|
- init.rb
|
145
109
|
- lib/classy_enum.rb
|
146
|
-
- lib/classy_enum/active_record.rb
|
147
110
|
- lib/classy_enum/attributes.rb
|
148
111
|
- lib/classy_enum/base.rb
|
149
112
|
- lib/classy_enum/class_methods.rb
|
@@ -153,41 +116,36 @@ files:
|
|
153
116
|
- lib/generators/classy_enum/templates/enum.rb
|
154
117
|
- spec/active_record_spec.rb
|
155
118
|
- spec/classy_enum_attributes_spec.rb
|
119
|
+
- spec/classy_enum_migration_spec.rb
|
156
120
|
- spec/classy_enum_semantic_form_builder_spec.rb
|
157
121
|
- spec/classy_enum_spec.rb
|
158
122
|
- spec/spec_helper.rb
|
159
123
|
homepage: http://github.com/beerlington/classy_enum
|
160
|
-
licenses:
|
124
|
+
licenses:
|
161
125
|
- MIT
|
162
126
|
post_install_message:
|
163
127
|
rdoc_options: []
|
164
|
-
|
165
|
-
require_paths:
|
128
|
+
require_paths:
|
166
129
|
- lib
|
167
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
130
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
168
131
|
none: false
|
169
|
-
requirements:
|
170
|
-
- -
|
171
|
-
- !ruby/object:Gem::Version
|
172
|
-
|
173
|
-
segments:
|
132
|
+
requirements:
|
133
|
+
- - ! '>='
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
136
|
+
segments:
|
174
137
|
- 0
|
175
|
-
|
176
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
138
|
+
hash: -3853471588161721996
|
139
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
177
140
|
none: false
|
178
|
-
requirements:
|
179
|
-
- -
|
180
|
-
- !ruby/object:Gem::Version
|
181
|
-
|
182
|
-
segments:
|
183
|
-
- 0
|
184
|
-
version: "0"
|
141
|
+
requirements:
|
142
|
+
- - ! '>='
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: '0'
|
185
145
|
requirements: []
|
186
|
-
|
187
146
|
rubyforge_project:
|
188
147
|
rubygems_version: 1.8.5
|
189
148
|
signing_key:
|
190
149
|
specification_version: 3
|
191
150
|
summary: A class based enumerator utility for Ruby on Rails
|
192
151
|
test_files: []
|
193
|
-
|
@@ -1,15 +0,0 @@
|
|
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
|