class DoNotDisturb def initialize @desk = InformationDesk.new end def method_missing(name, *args) unless name.to_s == "emergency" hour = Time.now.hour raise "Out for lunch" if hour >= 12 && hour < 14 end @desk.send(name, *args) end end # At 12:30... DoNotDisturb.new.emergency # => "emergency() called" DoNotDisturb.new.flights # ~> -:37:in `method_missing': Out for lunch (RuntimeError)