OpenStructインスタンスメソッドの名前と同じ名前の属性を持つオープン構造体を作成しようとすると、問題が発生しています。具体的には、属性がcapture
のオープンな構造体を作成したいと考えています。私はRSpecのテストでスタブとしてこれを使用していますので、私はメソッドの名前を変更することはできませんOpenStruct方法を見てインスタンスメソッドと同じ名前のOpenStruct属性を定義する
#=> OpenStruct.new(capture: true).capture
#=> ArgumentError: wrong number of arguments (0 for 1)
(それはcapture
でなければならない)、それは方法capture
を持っており、それこのメソッドは呼び出されています。そのメソッドの1つと同じ名前の属性を持つ構造体をインスタンス化する方法はありますか?
明確にするために、私は特に、レール4.0ではなくレール5でブレークを確認したメソッドキャプチャが必要ですが、このような状況はopenstructが持つ可能性のあるどのメソッドでも当てはまります。
#=> OpenStruct.new(class: true).class
#=> OpenStruct
レール5ではうまく動作しますが、レールでは動作しません。4. 'class'メソッドを使用すると、openstructインスタンスメソッドが使用されますが、属性は定義されません。 – PhilVarg
"あなたがメソッド 'class ''? –
'capture'の代わりに' class'属性を定義すると、属性iが定義するのではなく、 'struct'メソッドを使用します。私は明快に私の質問を編集しました – PhilVarg