設定されていない属性にアクセスしようとすると、OpenStruct のサブクラス (または任意のクラス)、またはハッシュがカスタム例外を発生させるようにする方法を見つけようとしています。define_method
これを行うことができなかっmethod_missing
たので、Rubyでどのように行うべきかわかりません。
次に例を示します。
class Request < OpenStruct...
request = Request.new
begin
request.non_existent_attr
rescue CustomError...
私はそれが次のようなものでなければならないだろうと想像できました:
class Hash
# if trying to access key:
# 1) key exists, return key
# 2) key doesn't exist, raise exception
end
編集:存在する属性は例外を発生させません。私が探している機能は、属性に自由にアクセスできるようにすることです。属性が存在しない場合は、カスタム例外が発生します。