Skip to content

Instantly share code, notes, and snippets.

@msassak
Created February 4, 2011 18:38
Show Gist options
  • Select an option

  • Save msassak/811523 to your computer and use it in GitHub Desktop.

Select an option

Save msassak/811523 to your computer and use it in GitHub Desktop.
module NavWorld
class << self
def nav_callbacks
@nav_callbacks ||= {}
end
def under(path, &block)
nav_callbacks[path] = block
end
def extended(base)
base.instance_exec do
alias :visit_without_callbacks :visit
def visit(path)
(nav_callbacks[path] || lambda{}).call
visit_without_callbacks(path)
end
end
end
end
def nav_callbacks
NavWorld.nav_callbacks
end
end
World(NavWorld)
NavWorld.under("/") do
puts "I am visiting the root, yo!"
end
NavWorld.under("/devices") do
puts "I need me some devices!"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment