Skip to content

Commit b7728b1

Browse files
authored
Merge pull request #452 from seanpdoyle/singleton-reload
Singletons: Fix broken `reload` method
2 parents ea22c4a + 2d1345c commit b7728b1

File tree

4 files changed

+38
-1
lines changed

4 files changed

+38
-1
lines changed

lib/active_resource/base.rb

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1555,7 +1555,7 @@ def encode(options = {})
15551555
# my_branch.name # => "Wilson Road"
15561556
def reload
15571557
run_callbacks :reload do
1558-
self.load(self.class.find(to_param, params: @prefix_options).attributes, false, true)
1558+
self.load(find_self.attributes, false, true)
15591559
end
15601560
end
15611561

@@ -1811,6 +1811,10 @@ def find_or_create_resource_for(name)
18111811
end
18121812
end
18131813

1814+
def find_self
1815+
self.class.find(to_param, params: @prefix_options)
1816+
end
1817+
18141818
def const_valid?(*const_args)
18151819
self.class.const_defined?(*const_args)
18161820
true

lib/active_resource/singleton.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,5 +134,9 @@ def create(path = singleton_path)
134134
def singleton_path(options = nil)
135135
self.class.singleton_path(options || prefix_options)
136136
end
137+
138+
def find_self
139+
self.class.find(@prefix_options)
140+
end
137141
end
138142
end

test/cases/callbacks_test.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,21 @@ def test_reload
164164
], developer.history
165165
end
166166

167+
def test_reload_singleton
168+
weather = Weather.find
169+
weather.reload
170+
assert_equal [
171+
[ :before_reload, :method ],
172+
[ :before_reload, :proc ],
173+
[ :before_reload, :object ],
174+
[ :before_reload, :block ],
175+
[ :after_reload, :method ],
176+
[ :after_reload, :proc ],
177+
[ :after_reload, :object ],
178+
[ :after_reload, :block ]
179+
], weather.history
180+
end
181+
167182
def test_update
168183
developer = Developer.find(1)
169184
developer.save

test/singleton_test.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,4 +135,18 @@ def test_update
135135
weather.status = "Rainy"
136136
weather.save
137137
end
138+
139+
def test_reload
140+
setup_weather
141+
142+
# First Create the Weather
143+
weather = Weather.create!(status: "Sunny", temperature: 67)
144+
145+
# Then reload it
146+
weather.reload
147+
148+
request = ActiveResource::HttpMock.requests.last
149+
assert_equal :get, request.method
150+
assert_equal "/weather.json", request.path
151+
end
138152
end

0 commit comments

Comments
 (0)