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 CHANGED
@@ -1,7 +1,7 @@
1
1
  h1. has_metadata -- Keep your tables narrow
2
2
 
3
3
  | *Author* | Tim Morgan |
4
- | *Version* | 1.5.2 (Dec 27, 2011) |
4
+ | *Version* | 1.5.3 (Jan 23, 2012) |
5
5
  | *License* | Released under the MIT License. |
6
6
 
7
7
  h2. Important note for those upgrading from 1.0 to 1.1
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 = "2011-12-28"
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.13"
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>, [">= 3.1"])
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>, [">= 3.1"])
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>, [">= 3.1"])
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.set_fields self.class.metadata_fields
150
+ metadata
150
151
  else
151
- (metadata || Metadata.transaction { metadata || create_metadata }).set_fields self.class.metadata_fields
152
- end
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
@@ -1,7 +1,7 @@
1
1
  class CreateMetadata < ActiveRecord::Migration
2
2
  def change
3
3
  create_table :metadata do |t|
4
- t.text :data, null: false
4
+ t.text :data
5
5
  end
6
6
  end
7
7
  end
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.2
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: 2011-12-28 00:00:00.000000000 Z
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: &70205459933480 !ruby/object:Gem::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.1'
21
+ version: '3.2'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70205459933480
24
+ version_requirements: *70238498869260
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: boolean
27
- requirement: &70205459933000 !ruby/object:Gem::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: *70205459933000
35
+ version_requirements: *70238498722520
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: jeweler
38
- requirement: &70205459932520 !ruby/object:Gem::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: *70205459932520
46
+ version_requirements: *70238498878240
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: yard
49
- requirement: &70205459932040 !ruby/object:Gem::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: *70205459932040
57
+ version_requirements: *70238498887960
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: RedCloth
60
- requirement: &70205459931560 !ruby/object:Gem::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: *70205459931560
68
+ version_requirements: *70238498966980
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: sqlite3
71
- requirement: &70205459931080 !ruby/object:Gem::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: *70205459931080
79
+ version_requirements: *70238498988960
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: rspec
82
- requirement: &70205459930600 !ruby/object:Gem::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: *70205459930600
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.13
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