Hi, Is there an alternative to calling a Module method from a nested
class? The code:
module GroupSweeper
def expire_cache(paths)
paths\.each do |path|
expire\_page\(path\)
end
end
class SweeperOne < ActionController::Caching::Sweeper
include GroupSweeper
observe Subject
def after\_save\(subject\)
expire\_cache\(\[root\_path,subjects\_path\]\)
end
def after\_destroy\(subject\)
expire\_cache\(\[root\_path,subjects\_path\]\)
end
end
end
How can I call GroupSweeper's expire_cache method from within
SweeperOne without explicitely including it? Should I not be doing
this?
Afaik there is no way to call an instance method of a module without
including it (or extending an Object with it).
But you can make expire_cache a module class method and then call it.
module GroupSweeper
def self.expire_cache(paths)
puts "dummy code"
end
end
class Foo < Bar
def baz(arg)
GroupSweeper.expire_cache(arg)
end
end
ยทยทยท
2011/3/16 mgerstenblatt@gmail.com <mgerstenblatt@gmail.com>
Hi, Is there an alternative to calling a Module method from a nested
class? The code:
module GroupSweeper
def expire_cache(paths)
paths.each do |path|
expire_page(path)
end
end
class SweeperOne < ActionController::Caching::Sweeper
include GroupSweeper
observe Subject
def after_save(subject)
expire_cache([root_path,subjects_path])
end
def after_destroy(subject)
expire_cache([root_path,subjects_path])
end
end
end
How can I call GroupSweeper's expire_cache method from within
SweeperOne without explicitely including it? Should I not be doing
this?