Ruby捕获类级别“未实现”异常

vqlkdk9b  于 2023-03-01  发布在  Ruby
关注(0)|答案(1)|浏览(126)

这可能是不可能的,但我还是要问。
我从一个数据库表动态创建CLASS方法。我已经用完了AWS上的env var空间。所以我有一个名/值对的表,并CLASS.name在初始化时动态创建www.example.com方法。
有什么方法可以在CLASS作用域而不是在调用者作用域捕获对CLASS.[unknown_name]的调用吗?

lmyy7pcs

lmyy7pcs1#

你可以重新定义类的method_missing方法。在那里你可以运行你的实现或者调用super来引发异常。

class MyTest
  def self.method_missing(method, *args)
    if %w(known_method).include? method.to_s
      puts "method: #{method}\nargs: #{args}"
    else
      super
    end
  end
end

MyTest.known_method "test", 123
# method: unknown_method
# args: ["test", 123]
# => nil

MyTest.unknown_method "test", 123
# `method_missing': undefined method `unknown_method' for MyTest:Class (NoMethodError)

相关问题