columns_on_demand 5.1.0 → 5.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c49cd47105f630d84e2f6ad368006311ee60c3c3
4
- data.tar.gz: c239c30034961fd54de59f856c101c027d21bb36
3
+ metadata.gz: 11669dc2b1270745b3daf5f0b4edd68a711edc45
4
+ data.tar.gz: 7e221c815f656f81f225fe0052c1acb22d4346dd
5
5
  SHA512:
6
- metadata.gz: 3408bb8a756cd559c996ca3afdb7b7994a9137bc94ae19e97b365f12c845da1d154353e6b1900b28e631cee76d8cb73289bffe09f46bd71300d560a5be94ff17
7
- data.tar.gz: 3ffd5d76e1fc8f8ce5a260927faa6dd022c6d151bea1c72e0fea4e7c8804f81443f265e6b89960747d38d4d7d4690e5d101a635fc5deb16e399c91b312adafa3
6
+ metadata.gz: 1ce9b3fb616787002fa71b58c4dbc71a7d00795f2ac7c0cfd905326bcc32b0f444664b6e529488c8799d5054f5a78076f159f28b7b21130559cb8848dc92a58e
7
+ data.tar.gz: 31f75591d087e6e4e448c36ba99ebd8fd2ce186af13f7067f67bf2bef6fa5909d6b8b943214236f346ba36eff25f8708a9d772c066feb2006fcc05f142fafcc9
data/README.md CHANGED
@@ -52,5 +52,6 @@ Thanks
52
52
 
53
53
  * Tim Connor (@tlconnor)
54
54
  * Tobias Matthies (@tobmatth)
55
+ * Phil Ross (@philr)
55
56
 
56
57
  Copyright (c) 2008-2015 Will Bryant, Sekuda Ltd, released under the MIT license
@@ -68,8 +68,6 @@ module ColumnsOnDemand
68
68
  attr_names.each_with_index do |attr_name, i|
69
69
  columns_loaded << attr_name
70
70
  value = row[i]
71
-
72
- # activerecord 4.2 or later, which make it easy to replicate the normal typecasting and deserialization logic
73
71
  @attributes.write_from_database(attr_name, value)
74
72
  end
75
73
  end
@@ -138,3 +136,19 @@ end
138
136
 
139
137
  ActiveRecord::Base.send(:extend, ColumnsOnDemand::BaseMethods)
140
138
  ActiveRecord::Relation.send(:prepend, ColumnsOnDemand::RelationMethods)
139
+
140
+ # work around ActiveRecord 5.0 and 5.1 converting uninitialized attributes to value nil on save
141
+ # (due to dirty.rb mapping @attributes). this is not only a problem for columns_on_demand as it
142
+ # means that a MissingAttributeError will never be raised after save, but we suffer more.
143
+ # ActiveRecord 4.2's Attribute doesn't have forgetting_assignment (or this problem).
144
+ if ActiveRecord::Attribute.uninitialized(nil, nil).try(:forgetting_assignment).try(:initialized?)
145
+ module ActiveRecord
146
+ class Attribute # :nodoc:
147
+ class Uninitialized < Attribute # :nodoc:
148
+ def forgetting_assignment
149
+ dup
150
+ end
151
+ end
152
+ end
153
+ end
154
+ end
@@ -1,3 +1,3 @@
1
1
  module ColumnsOnDemand
2
- VERSION = '5.1.0'
2
+ VERSION = '5.1.1'
3
3
  end
@@ -163,6 +163,26 @@ class ColumnsOnDemandTest < ActiveSupport::TestCase
163
163
  assert_not_equal old_object_id, record.file_data.object_id
164
164
  end
165
165
 
166
+ test "it does not think the column has been loaded if a reloaded instance that has not loaded the attribute is saved" do
167
+ record = Implicit.first
168
+ record.update_attributes!(:file_data => "New file data")
169
+
170
+ record.reload
171
+ record.save!
172
+
173
+ assert_equal "New file data", record.file_data
174
+ end
175
+
176
+ test "it does not think the column has been loaded if a fresh instance that has not loaded the attribute is saved" do
177
+ record = Implicit.first
178
+ record.update_attributes!(:file_data => "New file data")
179
+
180
+ record = Implicit.find(record.id)
181
+ record.save!
182
+
183
+ assert_equal "New file data", record.file_data
184
+ end
185
+
166
186
  test "it doesn't override custom select() finds" do
167
187
  record = Implicit.select("id, file_data").first
168
188
  klass = ActiveRecord.const_defined?(:MissingAttributeError) ? ActiveRecord::MissingAttributeError : ActiveModel::MissingAttributeError
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: columns_on_demand
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.0
4
+ version: 5.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Will Bryant
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-04-13 00:00:00.000000000 Z
11
+ date: 2017-05-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -185,3 +185,4 @@ test_files:
185
185
  - test/fixtures/parents.yml
186
186
  - test/schema.rb
187
187
  - test/test_helper.rb
188
+ has_rdoc: false