"Undefined method merge" when using sweeper

Hi,

I’m trying to use sweepers for the first time and got a problem - I
get “undefined method `merge’ for “/signature/
f2d7c7c66450b169.html”:String”. The “/signature/f2d7c7c66450b169.html”
part of the error message is the cached page.

Here’s my sweeper:
class FooSweeper < ActionController::Caching::Sweeper
observe Foo

def after_save(foo)
expire_cache(foo)
end

def after_destroy(foo)
expire_cache(foo)
end

def expire_cache(foo)
expire_page signature_path(:opaque_id => foo.opaque_id) # line 13
expire_page signature_image_path(:opaque_id => foo.opaque_id)
end

end

The signature_path(:opaque_id => string) generates “/signature/
string.html” route, so this part works correctly.

Here’s stack trace:
…/vendor/rails/actionpack/lib/action_controller/caching.rb:125:in
expire_page' .../vendor/rails/actionpack/lib/action_controller/caching.rb:612:insend’
…/vendor/rails/actionpack/lib/action_controller/caching.rb:612:in
method_missing' #{RAILS_ROOT}/app/sweepers/foo_sweeper.rb:13:inexpire_cache’
#{RAILS_ROOT}/app/sweepers/foo_sweeper.rb:5:in after_save' .../app/controllers/foo_controller.rb:61:inunsubscribe’

Any ideas what can be wrong? I’m using Rails 1.2.6.
Thanks in advance

On Apr 1, 9:34 pm, szimek [email protected] wrote:

expire_page signature_image_path(:opaque_id => foo.opaque_id)

…/vendor/rails/actionpack/lib/action_controller/caching.rb:612:in
send' .../vendor/rails/actionpack/lib/action_controller/caching.rb:612:in method_missing’
#{RAILS_ROOT}/app/sweepers/foo_sweeper.rb:13:in expire_cache' #{RAILS_ROOT}/app/sweepers/foo_sweeper.rb:5:in after_save’
…/app/controllers/foo_controller.rb:61:in `unsubscribe’

Any ideas what can be wrong? I’m using Rails 1.2.6.
Thanks in advance

Solved it myself - just changed expire_page to
ApplicationController.expire_page. I’m not sure why it didn’t work
before - I was using Railscast 89 - “Page caching” as the reference.