has_metadata 1.5.2 → 1.5.3
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/README.textile +1 -1
- data/has_metadata.gemspec +5 -5
- data/lib/has_metadata.rb +11 -6
- data/templates/create_metadata.rb +1 -1
- metadata +19 -19
data/README.textile
CHANGED
data/has_metadata.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
|
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Tim Morgan"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2012-01-24"
|
13
13
|
s.description = "has_metadata lets you move non-indexed and weighty columns off of your big tables by creating a separate metadata table to store all this extra information. Works with Ruby 1.9. and Rails 3.0."
|
14
14
|
s.email = "git@timothymorgan.info"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -29,14 +29,14 @@ Gem::Specification.new do |s|
|
|
29
29
|
s.homepage = "http://github.com/riscfuture/has_metadata"
|
30
30
|
s.require_paths = ["lib"]
|
31
31
|
s.required_ruby_version = Gem::Requirement.new(">= 1.9")
|
32
|
-
s.rubygems_version = "1.8.
|
32
|
+
s.rubygems_version = "1.8.15"
|
33
33
|
s.summary = "Reduce your table width by moving non-indexed columns to a separate metadata table"
|
34
34
|
|
35
35
|
if s.respond_to? :specification_version then
|
36
36
|
s.specification_version = 3
|
37
37
|
|
38
38
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
39
|
-
s.add_runtime_dependency(%q<rails>, ["
|
39
|
+
s.add_runtime_dependency(%q<rails>, ["< 3.2"])
|
40
40
|
s.add_runtime_dependency(%q<boolean>, [">= 0"])
|
41
41
|
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
42
42
|
s.add_development_dependency(%q<yard>, [">= 0"])
|
@@ -44,7 +44,7 @@ Gem::Specification.new do |s|
|
|
44
44
|
s.add_development_dependency(%q<sqlite3>, [">= 0"])
|
45
45
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
46
46
|
else
|
47
|
-
s.add_dependency(%q<rails>, ["
|
47
|
+
s.add_dependency(%q<rails>, ["< 3.2"])
|
48
48
|
s.add_dependency(%q<boolean>, [">= 0"])
|
49
49
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
50
50
|
s.add_dependency(%q<yard>, [">= 0"])
|
@@ -53,7 +53,7 @@ Gem::Specification.new do |s|
|
|
53
53
|
s.add_dependency(%q<rspec>, [">= 0"])
|
54
54
|
end
|
55
55
|
else
|
56
|
-
s.add_dependency(%q<rails>, ["
|
56
|
+
s.add_dependency(%q<rails>, ["< 3.2"])
|
57
57
|
s.add_dependency(%q<boolean>, [">= 0"])
|
58
58
|
s.add_dependency(%q<jeweler>, [">= 0"])
|
59
59
|
s.add_dependency(%q<yard>, [">= 0"])
|
data/lib/has_metadata.rb
CHANGED
@@ -26,7 +26,7 @@ module HasMetadata
|
|
26
26
|
if value.kind_of?(String) then
|
27
27
|
if type == Integer or type == Fixnum then
|
28
28
|
begin
|
29
|
-
return Integer(value)
|
29
|
+
return Integer(value.sub(/^0+/, '')) # so that it doesn't think it's in octal
|
30
30
|
rescue ArgumentError
|
31
31
|
return value
|
32
32
|
end
|
@@ -84,6 +84,7 @@ module HasMetadata
|
|
84
84
|
|
85
85
|
if options.kind_of?(Hash) then
|
86
86
|
type = options.delete(:type)
|
87
|
+
type_validate = !options.delete(:skip_type_validation)
|
87
88
|
options.delete :default
|
88
89
|
|
89
90
|
validate do |obj|
|
@@ -91,7 +92,7 @@ module HasMetadata
|
|
91
92
|
errors.add(name, :incorrect_type) unless
|
92
93
|
HasMetadata.metadata_typecast(value, type).kind_of?(type) or
|
93
94
|
((options[:allow_nil] and value.nil?) or (options[:allow_blank] and value.blank?))
|
94
|
-
end if type
|
95
|
+
end if type && type_validate
|
95
96
|
validates(name, options) unless options.empty? or (options.keys - [ :allow_nil, :allow_blank ]).empty?
|
96
97
|
end
|
97
98
|
end
|
@@ -143,13 +144,17 @@ module HasMetadata
|
|
143
144
|
|
144
145
|
# @return [Metadata] An existing associated {Metadata} instance, or new,
|
145
146
|
# saved one if none was found.
|
146
|
-
|
147
|
+
|
147
148
|
def metadata!
|
148
149
|
if instance_variables.include?(:@metadata) then
|
149
|
-
metadata
|
150
|
+
metadata
|
150
151
|
else
|
151
|
-
|
152
|
-
|
152
|
+
if new_record? then
|
153
|
+
metadata || build_metadata
|
154
|
+
else
|
155
|
+
metadata || Metadata.transaction { metadata || create_metadata }
|
156
|
+
end
|
157
|
+
end.set_fields self.class.metadata_fields
|
153
158
|
end
|
154
159
|
|
155
160
|
# @private
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: has_metadata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.5.
|
4
|
+
version: 1.5.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,22 +9,22 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2012-01-24 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement: &
|
16
|
+
requirement: &70238498869260 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - <
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: '3.
|
21
|
+
version: '3.2'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70238498869260
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: boolean
|
27
|
-
requirement: &
|
27
|
+
requirement: &70238498722520 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70238498722520
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: jeweler
|
38
|
-
requirement: &
|
38
|
+
requirement: &70238498878240 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70238498878240
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: yard
|
49
|
-
requirement: &
|
49
|
+
requirement: &70238498887960 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70238498887960
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: RedCloth
|
60
|
-
requirement: &
|
60
|
+
requirement: &70238498966980 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70238498966980
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: sqlite3
|
71
|
-
requirement: &
|
71
|
+
requirement: &70238498988960 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :development
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70238498988960
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: rspec
|
82
|
-
requirement: &
|
82
|
+
requirement: &70238499053380 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :development
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70238499053380
|
91
91
|
description: has_metadata lets you move non-indexed and weighty columns off of your
|
92
92
|
big tables by creating a separate metadata table to store all this extra information.
|
93
93
|
Works with Ruby 1.9. and Rails 3.0.
|
@@ -126,7 +126,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
126
|
version: '0'
|
127
127
|
requirements: []
|
128
128
|
rubyforge_project:
|
129
|
-
rubygems_version: 1.8.
|
129
|
+
rubygems_version: 1.8.15
|
130
130
|
signing_key:
|
131
131
|
specification_version: 3
|
132
132
|
summary: Reduce your table width by moving non-indexed columns to a separate metadata
|