Tbpgr Blog

Employee Experience Engineer tbpgr(てぃーびー) のブログ

Ruby | Module | method_defined?

概要

Module#method_defined?(name) -> bool

詳細

モジュールにインスタンスメソッド name が定義されているとき true を返却。
引数は Symbol か String を指定可能

サンプルコード
require 'tbpgr_utils'

module Hogeable
  def hogeable
  end
end

class Hoge
  include Hogeable
  def hoge
    print 'hoge'
  end
end

class ChildHoge < Hoge
end

bulk_puts_eval binding, <<-EOS
Hoge.method_defined? :hoge
Hoge.method_defined? :hogeable
Hoge.method_defined? 'hoge'
Hoge.method_defined? 'hogeable'
ChildHoge.method_defined? :hoge
Hogeable.method_defined? :hogeable
EOS

__END__
下記はTbpgrUtils gemの機能
bulk_puts_eval

https://rubygems.org/gems/tbpgr_utils
https://github.com/tbpgr/tbpgr_utils

出力

出力

Hoge.method_defined? :hoge         # => true
Hoge.method_defined? :hogeable     # => true
Hoge.method_defined? 'hoge'        # => true
Hoge.method_defined? 'hogeable'    # => true
ChildHoge.method_defined? :hoge    # => true
Hogeable.method_defined? :hogeable # => true