Author: nobu (Nobuyoshi N.)
Status: Assigned
Priority: Normal
Assignee: matz (Yukihiro M.)
Category: core
Target version: 2.0.0
ruby -v: 35201
=begin
Currently (({Module#method_defined?})) does not accept “(({inherited}))”
flags as (({Module#instance_methods})) and others.
To tell if a method is defined at an exact class/module, we have to use
bad idiom:
mod.instance_methods(false).include?(:foo)
So I propose to let (({method_defined?})) and etc accept the flag.
=end
Author: nobu (Nobuyoshi N.)
Status: Rejected
Priority: Normal
Assignee: matz (Yukihiro M.)
Category: core
Target version: next minor
=begin
Currently (({Module#method_defined?})) does not accept “(({inherited}))”
flags as (({Module#instance_methods})) and others.
To tell if a method is defined at an exact class/module, we have to use
bad idiom:
mod.instance_methods(false).include?(:foo)
So I propose to let (({method_defined?})) and etc accept the flag.
=end
Issue #6241 has been updated by trans (Thomas S.).
I think this is certainly a good idea. But I want to also point out that
it’s not always ideal either b/c #method_defined? reports false for
private/protected methods. So in cases where the method in question
might have known visibility one would have to do:
if method_defined?(:foo) or private_method_defined?(:foo) or
protected_method_defined?(:foo)
which sucks. Of course, this has always been an issue with #instance_methods too.
Perhaps now that named parameters are coming into their own, the
interface should be modified to handle options?
Author: nobu (Nobuyoshi N.)
Status: Assigned
Priority: Normal
Assignee: matz (Yukihiro M.)
Category: core
Target version: 2.0.0
=begin
Currently (({Module#method_defined?})) does not accept “(({inherited}))”
flags as (({Module#instance_methods})) and others.
To tell if a method is defined at an exact class/module, we have to use
bad idiom:
mod.instance_methods(false).include?(:foo)
So I propose to let (({method_defined?})) and etc accept the flag.
=end
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.