enum_records 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +1 -0
- data/{README.rdoc → README.md} +8 -3
- data/Rakefile +3 -3
- data/VERSION +1 -1
- data/enum_records.gemspec +8 -5
- data/lib/enum_records.rb +7 -1
- data/spec/enum_records_spec.rb +29 -3
- data/spec/models/document.rb +1 -1
- data/spec/models/page.rb +1 -0
- metadata +36 -22
data/Gemfile
CHANGED
data/{README.rdoc → README.md}
RENAMED
@@ -1,8 +1,13 @@
|
|
1
|
-
|
1
|
+
# enum_records
|
2
2
|
|
3
3
|
Description goes here.
|
4
4
|
|
5
|
-
|
5
|
+
# Versions history
|
6
|
+
|
7
|
+
* 0.1.1 - added model instnace accessor method `enum_attributes` to access all fields that were passed at enum definition.
|
8
|
+
* 0.1.0 - first release
|
9
|
+
|
10
|
+
# Contributing to enum_records
|
6
11
|
|
7
12
|
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet
|
8
13
|
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it
|
@@ -12,7 +17,7 @@ Description goes here.
|
|
12
17
|
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
13
18
|
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
|
14
19
|
|
15
|
-
|
20
|
+
# Copyright
|
16
21
|
|
17
22
|
Copyright (c) 2011 Alex Tkachev. See LICENSE.txt for
|
18
23
|
further details.
|
data/Rakefile
CHANGED
@@ -18,7 +18,7 @@ Jeweler::Tasks.new do |gem|
|
|
18
18
|
gem.homepage = "http://github.com/alextk/enum_records"
|
19
19
|
gem.license = "MIT"
|
20
20
|
gem.summary = %Q{Allows to create named model records (enums).}
|
21
|
-
gem.description = %Q{This gem allows to
|
21
|
+
gem.description = %Q{This gem allows to create enum records (named records) and to retrieve them easily. Supports globalize3 localization in enum fields initialization. }
|
22
22
|
gem.email = "tkachev.alex@gmail.com"
|
23
23
|
gem.authors = ["Alex Tkachev"]
|
24
24
|
# dependencies defined in Gemfile
|
@@ -38,8 +38,8 @@ end
|
|
38
38
|
|
39
39
|
task :default => :spec
|
40
40
|
|
41
|
-
require '
|
42
|
-
|
41
|
+
require 'rdoc/task'
|
42
|
+
RDoc::Task.new do |rdoc|
|
43
43
|
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
44
44
|
|
45
45
|
rdoc.rdoc_dir = 'rdoc'
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/enum_records.gemspec
CHANGED
@@ -5,23 +5,23 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{enum_records}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Alex Tkachev"]
|
12
|
-
s.date = %q{2011-07-
|
13
|
-
s.description = %q{This gem allows to
|
12
|
+
s.date = %q{2011-07-25}
|
13
|
+
s.description = %q{This gem allows to create enum records (named records) and to retrieve them easily. Supports globalize3 localization in enum fields initialization. }
|
14
14
|
s.email = %q{tkachev.alex@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE.txt",
|
17
|
-
"README.
|
17
|
+
"README.md"
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
21
|
".rspec",
|
22
22
|
"Gemfile",
|
23
23
|
"LICENSE.txt",
|
24
|
-
"README.
|
24
|
+
"README.md",
|
25
25
|
"Rakefile",
|
26
26
|
"VERSION",
|
27
27
|
"enum_records.gemspec",
|
@@ -45,6 +45,7 @@ Gem::Specification.new do |s|
|
|
45
45
|
s.specification_version = 3
|
46
46
|
|
47
47
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
48
|
+
s.add_development_dependency(%q<rdoc>, [">= 0"])
|
48
49
|
s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
|
49
50
|
s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
|
50
51
|
s.add_development_dependency(%q<jeweler>, ["~> 1.6.4"])
|
@@ -54,6 +55,7 @@ Gem::Specification.new do |s|
|
|
54
55
|
s.add_development_dependency(%q<sqlite3>, [">= 0"])
|
55
56
|
s.add_development_dependency(%q<globalize3>, [">= 0"])
|
56
57
|
else
|
58
|
+
s.add_dependency(%q<rdoc>, [">= 0"])
|
57
59
|
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
58
60
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
59
61
|
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
@@ -64,6 +66,7 @@ Gem::Specification.new do |s|
|
|
64
66
|
s.add_dependency(%q<globalize3>, [">= 0"])
|
65
67
|
end
|
66
68
|
else
|
69
|
+
s.add_dependency(%q<rdoc>, [">= 0"])
|
67
70
|
s.add_dependency(%q<rspec>, ["~> 2.3.0"])
|
68
71
|
s.add_dependency(%q<bundler>, ["~> 1.0.0"])
|
69
72
|
s.add_dependency(%q<jeweler>, ["~> 1.6.4"])
|
data/lib/enum_records.rb
CHANGED
@@ -40,7 +40,13 @@ module EnumRecords
|
|
40
40
|
end
|
41
41
|
|
42
42
|
module InstanceMethods
|
43
|
-
|
43
|
+
# return this instance enum atttributes as were passed at enum definition
|
44
|
+
# note that all atttributes are returned (both database and non database).
|
45
|
+
# note that database atttribute value can be different from enum attribute value (because it was changed in db by someone else)
|
46
|
+
def enum_attributes
|
47
|
+
enum_column_name = self.class._enums[:column_name]
|
48
|
+
self.class._enums[:definitions][self.send(enum_column_name)]
|
49
|
+
end
|
44
50
|
end
|
45
51
|
|
46
52
|
end
|
data/spec/enum_records_spec.rb
CHANGED
@@ -69,6 +69,32 @@ describe "Document" do
|
|
69
69
|
enums.should_not include(@non_enum)
|
70
70
|
end
|
71
71
|
|
72
|
+
it 'should have non database attributes accessable' do
|
73
|
+
enum_doc = Document.enum(:about)
|
74
|
+
enum_doc.enum_attributes.should_not be_nil
|
75
|
+
enum_doc.enum_attributes[:html_title].should == 'about us'
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'should return nil if it is not enum record and enum attributes requested' do
|
79
|
+
@non_enum.enum_attributes.should be_nil
|
80
|
+
end
|
81
|
+
|
82
|
+
context "when document is changed in db" do
|
83
|
+
it 'should have db attribute != enum attribute' do
|
84
|
+
enum_doc = Document.enum(:home)
|
85
|
+
enum_doc.name = '1234'
|
86
|
+
enum_doc.save.should be_true
|
87
|
+
|
88
|
+
Document.enum(:home).name.should_not == Document.enum(:home).enum_attributes[:name]
|
89
|
+
Document.enum(:home).enum_attributes[:name].should == 'Home page'
|
90
|
+
Document.enum(:home).name.should == '1234'
|
91
|
+
|
92
|
+
#restore original value
|
93
|
+
enum_doc.name = Document.enum(:home).enum_attributes[:name]
|
94
|
+
enum_doc.save.should be_true
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
72
98
|
end
|
73
99
|
|
74
100
|
describe "Page" do
|
@@ -78,9 +104,9 @@ describe "Page" do
|
|
78
104
|
|
79
105
|
it 'should find 3 defined enums' do
|
80
106
|
enums = Page.enums
|
81
|
-
enums.length.should ==
|
82
|
-
Page.count.should ==
|
83
|
-
enums.should include(Page.enum(:home), Page.enum(:profile), Page.enum(:project_categories))
|
107
|
+
enums.length.should == 4
|
108
|
+
Page.count.should == 5
|
109
|
+
enums.should include(Page.enum(:home), Page.enum(:profile), Page.enum(:project_categories), Page.enum(:ContactForm))
|
84
110
|
enums.should_not include(@non_enum)
|
85
111
|
end
|
86
112
|
|
data/spec/models/document.rb
CHANGED
data/spec/models/page.rb
CHANGED
@@ -7,5 +7,6 @@ class Page < ActiveRecord::Base
|
|
7
7
|
home :position=>1, :published => true, :locales => {'en-US'=>{:title=>'Home'}, 'he-IL'=>{:title=>'דף הבית'}}
|
8
8
|
profile :position=>2, :published => true, :locales=>{'en-US'=>{:title=>'Profile'}, 'he-IL'=>{:title=>'פרופיל'}}
|
9
9
|
project_categories :position=>3, :published=>true, :locales=>{'en-US'=>{:title=>'Projects'}, 'he-IL'=>{:title=>'פרויקטים'}}
|
10
|
+
ContactForm :position=>3, :published=>true, :locales=>{'en-US'=>{:title=>'contact us'}, 'he-IL'=>{:title=>'יצירת קשר'}}
|
10
11
|
end
|
11
12
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: enum_records
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 1
|
10
|
+
version: 0.1.1
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Alex Tkachev
|
@@ -15,12 +15,26 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-07-
|
18
|
+
date: 2011-07-25 00:00:00 +03:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
prerelease: false
|
23
23
|
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :development
|
33
|
+
name: rdoc
|
34
|
+
version_requirements: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
24
38
|
none: false
|
25
39
|
requirements:
|
26
40
|
- - ~>
|
@@ -33,10 +47,10 @@ dependencies:
|
|
33
47
|
version: 2.3.0
|
34
48
|
type: :development
|
35
49
|
name: rspec
|
36
|
-
version_requirements: *
|
50
|
+
version_requirements: *id002
|
37
51
|
- !ruby/object:Gem::Dependency
|
38
52
|
prerelease: false
|
39
|
-
requirement: &
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
40
54
|
none: false
|
41
55
|
requirements:
|
42
56
|
- - ~>
|
@@ -49,10 +63,10 @@ dependencies:
|
|
49
63
|
version: 1.0.0
|
50
64
|
type: :development
|
51
65
|
name: bundler
|
52
|
-
version_requirements: *
|
66
|
+
version_requirements: *id003
|
53
67
|
- !ruby/object:Gem::Dependency
|
54
68
|
prerelease: false
|
55
|
-
requirement: &
|
69
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
56
70
|
none: false
|
57
71
|
requirements:
|
58
72
|
- - ~>
|
@@ -65,10 +79,10 @@ dependencies:
|
|
65
79
|
version: 1.6.4
|
66
80
|
type: :development
|
67
81
|
name: jeweler
|
68
|
-
version_requirements: *
|
82
|
+
version_requirements: *id004
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
prerelease: false
|
71
|
-
requirement: &
|
85
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
72
86
|
none: false
|
73
87
|
requirements:
|
74
88
|
- - ">="
|
@@ -79,10 +93,10 @@ dependencies:
|
|
79
93
|
version: "0"
|
80
94
|
type: :development
|
81
95
|
name: rcov
|
82
|
-
version_requirements: *
|
96
|
+
version_requirements: *id005
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
prerelease: false
|
85
|
-
requirement: &
|
99
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
86
100
|
none: false
|
87
101
|
requirements:
|
88
102
|
- - ">="
|
@@ -95,10 +109,10 @@ dependencies:
|
|
95
109
|
version: 3.0.9
|
96
110
|
type: :development
|
97
111
|
name: activerecord
|
98
|
-
version_requirements: *
|
112
|
+
version_requirements: *id006
|
99
113
|
- !ruby/object:Gem::Dependency
|
100
114
|
prerelease: false
|
101
|
-
requirement: &
|
115
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
102
116
|
none: false
|
103
117
|
requirements:
|
104
118
|
- - ">="
|
@@ -111,10 +125,10 @@ dependencies:
|
|
111
125
|
version: 3.0.9
|
112
126
|
type: :development
|
113
127
|
name: activesupport
|
114
|
-
version_requirements: *
|
128
|
+
version_requirements: *id007
|
115
129
|
- !ruby/object:Gem::Dependency
|
116
130
|
prerelease: false
|
117
|
-
requirement: &
|
131
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
118
132
|
none: false
|
119
133
|
requirements:
|
120
134
|
- - ">="
|
@@ -125,10 +139,10 @@ dependencies:
|
|
125
139
|
version: "0"
|
126
140
|
type: :development
|
127
141
|
name: sqlite3
|
128
|
-
version_requirements: *
|
142
|
+
version_requirements: *id008
|
129
143
|
- !ruby/object:Gem::Dependency
|
130
144
|
prerelease: false
|
131
|
-
requirement: &
|
145
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
132
146
|
none: false
|
133
147
|
requirements:
|
134
148
|
- - ">="
|
@@ -139,8 +153,8 @@ dependencies:
|
|
139
153
|
version: "0"
|
140
154
|
type: :development
|
141
155
|
name: globalize3
|
142
|
-
version_requirements: *
|
143
|
-
description: "This gem allows to
|
156
|
+
version_requirements: *id009
|
157
|
+
description: "This gem allows to create enum records (named records) and to retrieve them easily. Supports globalize3 localization in enum fields initialization. "
|
144
158
|
email: tkachev.alex@gmail.com
|
145
159
|
executables: []
|
146
160
|
|
@@ -148,13 +162,13 @@ extensions: []
|
|
148
162
|
|
149
163
|
extra_rdoc_files:
|
150
164
|
- LICENSE.txt
|
151
|
-
- README.
|
165
|
+
- README.md
|
152
166
|
files:
|
153
167
|
- .document
|
154
168
|
- .rspec
|
155
169
|
- Gemfile
|
156
170
|
- LICENSE.txt
|
157
|
-
- README.
|
171
|
+
- README.md
|
158
172
|
- Rakefile
|
159
173
|
- VERSION
|
160
174
|
- enum_records.gemspec
|