Ruby 3.3 リファレンスマニュアル

instance method Module#const_defined?

const_defined?(name, inherit = true) -> bool[permalink][rdoc][edit]

モジュールに name で指定される名前の定数が定義されている時真を返します。

スーパークラスや include したモジュールで定義された定数を検索対象にするかどうかは第二引数で制御できます。

[PARAM] name:
String, Symbol で指定される定数名。
[PARAM] inherit:
false を指定するとスーパークラスや include したモジュールで定義された定数は対象にはなりません。
module Kernel
  ANSWER = 42
end

# Object は include したモジュールの定数に対しても
# true を返す
p Object.const_defined?(:ANSWER)        # => true

module Greeting
  HELLO = 'hello'
end
class Object
  include Greeting
end
# ユーザ定義のモジュールに対しても同様
p Object.const_defined?(:HELLO)         # => true

class Robot
  include Greeting
end
# Object 以外でも同様になった
# 第二引数のデフォルト値が true であるため
p Robot.const_defined?(:HELLO)          # => true

# 第二引数を false にした場合
p Robot.const_defined?(:HELLO, false)   # => false