active_remote 1.5.4 → 1.5.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -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