新しいアクセサを作成していて、情報を保持する独自の配列変数を持っていますが、そのメソッドでclass_evalを呼び出そうとすると、その変数のプッシュメソッドは機能しません。ルビ配列にプッシュできません
そのクラスで記述された方法と、次のようにclass_evalメソッド行が読み:
class_eval "def #{attr_name}=(value); #{attr_name} = value; #{information}.push value; end; def #{attr_name}_history; #{information}; end"
ので、この行のプッシュが動作しません。
また、a.barとa.otherなどがある場合はどうなりますか?これらの変数の別々のコピーを保持しますか? – eytanfb
この例では、 'attr_name'は' class_eval'が実行される前に '' foo ''と評価されるので、1つのパラメータの履歴だけが追加されます。あなたが言及するすべての変数に対してこのロジックを実行するmixinを書くこともできますし、instance_variablesを調べて自動的に追加することもできます。 –