From f1b7c3a146c27d2662e3735c069aaa41f619ec96 Mon Sep 17 00:00:00 2001 From: Konstantin Haase Date: Tue, 26 Feb 2013 12:57:27 +1100 Subject: [PATCH] no longer override define_singleton_method, fixes #567 --- CHANGES | 2 ++ lib/sinatra/base.rb | 8 ++++---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/CHANGES b/CHANGES index 71cfd54d..57104c2b 100644 --- a/CHANGES +++ b/CHANGES @@ -85,6 +85,8 @@ * Improve documentation (Konstantin Haase) + * No longer override `define_singleton_method`. (Konstantin Haase) + = 1.3.4 / 2013-01-26 * Improve documentation. (Kashyap, Stanislav Chistenko, Konstantin Haase, diff --git a/lib/sinatra/base.rb b/lib/sinatra/base.rb index 0e337ac2..eb164df3 100644 --- a/lib/sinatra/base.rb +++ b/lib/sinatra/base.rb @@ -1152,9 +1152,9 @@ module Sinatra end end - define_singleton_method("#{option}=", setter) if setter - define_singleton_method(option, getter) if getter - define_singleton_method("#{option}?", "!!#{option}") unless method_defined? "#{option}?" + define_singleton("#{option}=", setter) if setter + define_singleton(option, getter) if getter + define_singleton("#{option}?", "!!#{option}") unless method_defined? "#{option}?" self end @@ -1284,7 +1284,7 @@ module Sinatra private # Dynamically defines a method on settings. - def define_singleton_method(name, content = Proc.new) + def define_singleton(name, content = Proc.new) # replace with call to singleton_class once we're 1.9 only (class << self; self; end).class_eval do undef_method(name) if method_defined? name