active_remote 1.5.4 → 1.5.5

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.
@@ -36,8 +36,10 @@ module ActiveRemote
36
36
  def initialize(*)
37
37
  @attributes ||= {}
38
38
 
39
- run_callbacks :initialize do
40
- super
39
+ skip_dirty_tracking do
40
+ run_callbacks :initialize do
41
+ super
42
+ end
41
43
  end
42
44
  end
43
45
 
@@ -12,12 +12,20 @@ module ActiveRemote
12
12
  end
13
13
  end
14
14
 
15
+ def disable_dirty_tracking
16
+ @_active_remote_track_changes = false
17
+ end
18
+
19
+ def enable_dirty_tracking
20
+ @_active_remote_track_changes = true
21
+ end
22
+
15
23
  # Override #reload to provide dirty tracking.
16
24
  #
17
25
  def reload(*)
18
26
  super.tap do
19
27
  @previously_changed.try(:clear)
20
- @changed_attributes.clear
28
+ changed_attributes.clear
21
29
  end
22
30
  end
23
31
 
@@ -26,7 +34,7 @@ module ActiveRemote
26
34
  def save(*)
27
35
  if status = super
28
36
  @previously_changed = changes
29
- @changed_attributes.clear
37
+ changed_attributes.clear
30
38
  end
31
39
 
32
40
  status
@@ -37,25 +45,16 @@ module ActiveRemote
37
45
  def save!(*)
38
46
  super.tap do
39
47
  @previously_changed = changes
40
- @changed_attributes.clear
48
+ changed_attributes.clear
41
49
  end
42
50
  end
43
51
 
44
- # Override #serialize_records so that we can skip dirty tracking while
45
- # initializing records returned from a search.
46
- #
47
- def serialize_records
48
- return nil unless last_response.respond_to?(:records)
49
-
50
- last_response.records.map do |record|
51
- remote = self.class.new
52
+ def skip_dirty_tracking(&block)
53
+ disable_dirty_tracking
52
54
 
53
- remote._active_remote_track_changes = false
54
- remote.assign_attributes(record.to_hash)
55
- remote._active_remote_track_changes = true
55
+ yield
56
56
 
57
- remote
58
- end
57
+ enable_dirty_tracking
59
58
  end
60
59
 
61
60
  # Override #write_attribute (along with #[]=) so we can provide support for
@@ -1,3 +1,3 @@
1
1
  module ActiveRemote
2
- VERSION = "1.5.4"
2
+ VERSION = "1.5.5"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_remote
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.4
4
+ version: 1.5.5
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -221,7 +221,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
221
221
  version: '0'
222
222
  segments:
223
223
  - 0
224
- hash: -651201959748601196
224
+ hash: -1454920711068325330
225
225
  required_rubygems_version: !ruby/object:Gem::Requirement
226
226
  none: false
227
227
  requirements:
@@ -230,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
230
230
  version: '0'
231
231
  segments:
232
232
  - 0
233
- hash: -651201959748601196
233
+ hash: -1454920711068325330
234
234
  requirements: []
235
235
  rubyforge_project:
236
236
  rubygems_version: 1.8.25