这可能是不可能的,但我还是要问。我从一个数据库表动态创建CLASS方法。我已经用完了AWS上的env var空间。所以我有一个名/值对的表,并CLASS.name在初始化时动态创建www.example.com方法。有什么方法可以在CLASS作用域而不是在调用者作用域捕获对CLASS.[unknown_name]的调用吗?
lmyy7pcs1#
你可以重新定义类的method_missing方法。在那里你可以运行你的实现或者调用super来引发异常。
method_missing
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)
1条答案
按热度按时间lmyy7pcs1#
你可以重新定义类的
method_missing
方法。在那里你可以运行你的实现或者调用super来引发异常。