dynabix 0.3.0 → 0.3.1

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.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dynabix (0.3.0)
4
+ dynabix (0.3.1)
5
5
  activerecord (~> 3.0)
6
6
 
7
7
  GEM
@@ -7,6 +7,10 @@ Most recent changes are at the top
7
7
  Changes
8
8
  -------
9
9
 
10
- ### 0.3.0 - TBD ###
10
+ ### 0.3.1 - 5/7/2012 ###
11
+
12
+ * fix for activerecord not marking nested model serializers dirty
13
+
14
+ ### 0.3.0 - 5/4/2012 ###
11
15
 
12
16
  * Initial release
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.1
@@ -137,6 +137,8 @@ def create_reader(serializer, attr)
137
137
 
138
138
  def create_writer(serializer, attr)
139
139
  define_method("#{attr}=".to_sym) do |value|
140
+ # mark this attribute as dirty because AR will not mark serializers of nested models dirty
141
+ self.send("#{serializer}_will_change!")
140
142
  self[serializer][attr.to_sym] = value
141
143
  end
142
144
  end
@@ -132,6 +132,55 @@ class Bar < ActiveRecord::Base
132
132
  end
133
133
  end
134
134
  end
135
+ end
136
+
137
+
138
+ describe "using metadata with nested models" do
139
+
140
+ class Waterheater < ActiveRecord::Base
141
+ belongs_to :home
142
+ has_metadata :metadata, :efficiency
143
+ end
144
+
145
+ class Home < ActiveRecord::Base
146
+ has_many :waterheaters
147
+ accepts_nested_attributes_for :waterheaters
148
+ end
149
+
150
+ it "should save the child model metadata directly" do
151
+ home = Home.create(:name => "my home")
152
+ waterheater = home.waterheaters.new
153
+ waterheater.name = "system 1"
154
+ waterheater.efficiency = "90"
155
+ home.save!
156
+ home.waterheaters(reload=true).count.should == 1
157
+
158
+ waterheater = home.waterheaters.first
159
+ waterheater.name.should == "system 1"
160
+ waterheater.efficiency.should == "90"
161
+ end
162
+
163
+ it "should save the child model metadata via update_attributes" do
164
+ home = Home.create(:name => "my home")
165
+
166
+ waterheater = home.waterheaters.new
167
+ waterheater.name = "system 1"
168
+ waterheater.efficiency = "99"
169
+ home.save!
170
+ waterheater = home.waterheaters(reload=true).first
171
+ waterheater.name.should == "system 1"
172
+ waterheater.efficiency.should == "99"
173
+ home.reload
174
+
175
+ home.update_attributes({"name" => "new home name", "waterheaters_attributes" => {"0" => {"id" => waterheater.id, "efficiency" => "88"}} })
176
+
177
+ home.reload
178
+ home.name.should == "new home name"
179
+
180
+ waterheater = Waterheater.find waterheater.id
181
+ waterheater.efficiency.should == "88"
182
+ end
135
183
 
136
184
  end
185
+
137
186
  end
@@ -24,4 +24,18 @@
24
24
  t.timestamps
25
25
  end
26
26
 
27
+ create_table :homes, :force => true do |t|
28
+ t.text :name
29
+
30
+ t.timestamps
31
+ end
32
+
33
+ create_table :waterheaters, :force => true do |t|
34
+ t.text :name
35
+ t.integer :home_id
36
+ t.text :metadata
37
+
38
+ t.timestamps
39
+ end
40
+
27
41
  end
metadata CHANGED
@@ -1,184 +1,189 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: dynabix
3
- version: !ruby/object:Gem::Version
4
- version: 0.3.0
3
+ version: !ruby/object:Gem::Version
4
+ hash: 17
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 3
9
+ - 1
10
+ version: 0.3.1
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Robert Wahler
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2012-05-04 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: activerecord
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: '3.0'
17
+
18
+ date: 2012-05-07 00:00:00 Z
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
22
21
  type: :runtime
22
+ name: activerecord
23
23
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
24
+ version_requirements: &id001 !ruby/object:Gem::Requirement
25
25
  none: false
26
- requirements:
26
+ requirements:
27
27
  - - ~>
28
- - !ruby/object:Gem::Version
29
- version: '3.0'
30
- - !ruby/object:Gem::Dependency
31
- name: bundler
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: 1.0.14
28
+ - !ruby/object:Gem::Version
29
+ hash: 7
30
+ segments:
31
+ - 3
32
+ - 0
33
+ version: "3.0"
34
+ requirement: *id001
35
+ - !ruby/object:Gem::Dependency
38
36
  type: :development
37
+ name: bundler
39
38
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
39
+ version_requirements: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ hash: 11
45
+ segments:
46
+ - 1
47
+ - 0
48
+ - 14
45
49
  version: 1.0.14
46
- - !ruby/object:Gem::Dependency
47
- name: rspec
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: 2.6.0
50
+ requirement: *id002
51
+ - !ruby/object:Gem::Dependency
54
52
  type: :development
53
+ name: rspec
55
54
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
55
+ version_requirements: &id003 !ruby/object:Gem::Requirement
56
+ none: false
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ hash: 23
61
+ segments:
62
+ - 2
63
+ - 6
64
+ - 0
61
65
  version: 2.6.0
62
- - !ruby/object:Gem::Dependency
63
- name: aruba
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - '='
68
- - !ruby/object:Gem::Version
69
- version: 0.4.5
66
+ requirement: *id003
67
+ - !ruby/object:Gem::Dependency
70
68
  type: :development
69
+ name: aruba
71
70
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - '='
76
- - !ruby/object:Gem::Version
71
+ version_requirements: &id004 !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - "="
75
+ - !ruby/object:Gem::Version
76
+ hash: 5
77
+ segments:
78
+ - 0
79
+ - 4
80
+ - 5
77
81
  version: 0.4.5
78
- - !ruby/object:Gem::Dependency
79
- name: rake
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ! '>='
84
- - !ruby/object:Gem::Version
85
- version: 0.8.7
82
+ requirement: *id004
83
+ - !ruby/object:Gem::Dependency
86
84
  type: :development
85
+ name: rake
87
86
  prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: 0.8.7
94
- - !ruby/object:Gem::Dependency
95
- name: sqlite3-ruby
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ! '>='
100
- - !ruby/object:Gem::Version
87
+ version_requirements: &id005 !ruby/object:Gem::Requirement
88
+ none: false
89
+ requirements:
90
+ - - ">="
91
+ - !ruby/object:Gem::Version
92
+ hash: 49
93
+ segments:
94
+ - 0
95
+ - 8
96
+ - 7
101
97
  version: 0.8.7
98
+ requirement: *id005
99
+ - !ruby/object:Gem::Dependency
102
100
  type: :development
101
+ name: sqlite3-ruby
103
102
  prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
103
+ version_requirements: &id006 !ruby/object:Gem::Requirement
104
+ none: false
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ hash: 49
109
+ segments:
110
+ - 0
111
+ - 8
112
+ - 7
109
113
  version: 0.8.7
110
- - !ruby/object:Gem::Dependency
111
- name: yard
112
- requirement: !ruby/object:Gem::Requirement
113
- none: false
114
- requirements:
115
- - - ! '>='
116
- - !ruby/object:Gem::Version
117
- version: 0.7.4
114
+ requirement: *id006
115
+ - !ruby/object:Gem::Dependency
118
116
  type: :development
117
+ name: yard
119
118
  prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
- requirements:
123
- - - ! '>='
124
- - !ruby/object:Gem::Version
119
+ version_requirements: &id007 !ruby/object:Gem::Requirement
120
+ none: false
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ hash: 11
125
+ segments:
126
+ - 0
127
+ - 7
128
+ - 4
125
129
  version: 0.7.4
126
- - !ruby/object:Gem::Dependency
127
- name: redcarpet
128
- requirement: !ruby/object:Gem::Requirement
129
- none: false
130
- requirements:
131
- - - ! '>='
132
- - !ruby/object:Gem::Version
133
- version: 1.17.2
130
+ requirement: *id007
131
+ - !ruby/object:Gem::Dependency
134
132
  type: :development
133
+ name: redcarpet
135
134
  prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
- requirements:
139
- - - ! '>='
140
- - !ruby/object:Gem::Version
135
+ version_requirements: &id008 !ruby/object:Gem::Requirement
136
+ none: false
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ hash: 87
141
+ segments:
142
+ - 1
143
+ - 17
144
+ - 2
141
145
  version: 1.17.2
142
- - !ruby/object:Gem::Dependency
143
- name: guard
144
- requirement: !ruby/object:Gem::Requirement
145
- none: false
146
- requirements:
147
- - - ~>
148
- - !ruby/object:Gem::Version
149
- version: '1.0'
146
+ requirement: *id008
147
+ - !ruby/object:Gem::Dependency
150
148
  type: :development
149
+ name: guard
151
150
  prerelease: false
152
- version_requirements: !ruby/object:Gem::Requirement
151
+ version_requirements: &id009 !ruby/object:Gem::Requirement
153
152
  none: false
154
- requirements:
153
+ requirements:
155
154
  - - ~>
156
- - !ruby/object:Gem::Version
157
- version: '1.0'
158
- - !ruby/object:Gem::Dependency
159
- name: guard-rspec
160
- requirement: !ruby/object:Gem::Requirement
161
- none: false
162
- requirements:
163
- - - ~>
164
- - !ruby/object:Gem::Version
165
- version: '0.6'
155
+ - !ruby/object:Gem::Version
156
+ hash: 15
157
+ segments:
158
+ - 1
159
+ - 0
160
+ version: "1.0"
161
+ requirement: *id009
162
+ - !ruby/object:Gem::Dependency
166
163
  type: :development
164
+ name: guard-rspec
167
165
  prerelease: false
168
- version_requirements: !ruby/object:Gem::Requirement
166
+ version_requirements: &id010 !ruby/object:Gem::Requirement
169
167
  none: false
170
- requirements:
168
+ requirements:
171
169
  - - ~>
172
- - !ruby/object:Gem::Version
173
- version: '0.6'
174
- description: Dynabix dynamically creates read/write accessors on ActiveRecord models
175
- for storing attributes in a serialized Hash
176
- email:
170
+ - !ruby/object:Gem::Version
171
+ hash: 7
172
+ segments:
173
+ - 0
174
+ - 6
175
+ version: "0.6"
176
+ requirement: *id010
177
+ description: Dynabix dynamically creates read/write accessors on ActiveRecord models for storing attributes in a serialized Hash
178
+ email:
177
179
  - robert@gearheadforhire.com
178
180
  executables: []
181
+
179
182
  extensions: []
183
+
180
184
  extra_rdoc_files: []
181
- files:
185
+
186
+ files:
182
187
  - .gemfiles
183
188
  - .gitattributes
184
189
  - .gitignore
@@ -204,36 +209,44 @@ files:
204
209
  - spec/spec_helper.rb
205
210
  homepage: http://rubygems.org/gems/dynabix
206
211
  licenses: []
212
+
207
213
  post_install_message:
208
- rdoc_options:
214
+ rdoc_options:
209
215
  - --title
210
216
  - Dynabix Documentation
211
217
  - --main
212
218
  - README.markdown
213
219
  - --line-numbers
214
220
  - --inline-source
215
- require_paths:
221
+ require_paths:
216
222
  - lib
217
- required_ruby_version: !ruby/object:Gem::Requirement
223
+ required_ruby_version: !ruby/object:Gem::Requirement
218
224
  none: false
219
- requirements:
220
- - - ! '>='
221
- - !ruby/object:Gem::Version
222
- version: '0'
223
- segments:
225
+ requirements:
226
+ - - ">="
227
+ - !ruby/object:Gem::Version
228
+ hash: 3
229
+ segments:
224
230
  - 0
225
- hash: 575564662145783656
226
- required_rubygems_version: !ruby/object:Gem::Requirement
231
+ version: "0"
232
+ required_rubygems_version: !ruby/object:Gem::Requirement
227
233
  none: false
228
- requirements:
229
- - - ! '>='
230
- - !ruby/object:Gem::Version
234
+ requirements:
235
+ - - ">="
236
+ - !ruby/object:Gem::Version
237
+ hash: 23
238
+ segments:
239
+ - 1
240
+ - 3
241
+ - 6
231
242
  version: 1.3.6
232
243
  requirements: []
244
+
233
245
  rubyforge_project: dynabix
234
246
  rubygems_version: 1.8.21
235
247
  signing_key:
236
248
  specification_version: 3
237
249
  summary: An ActiveRecord 3.x Ruby gem for attribute serialization
238
250
  test_files: []
251
+
239
252
  has_rdoc: