【開発環境】
Ruby 2.7.5
Rails 6.1.7.6
どういう時にエラーが発生したか
秀和システムの「Ruby on Rails 6 超入門」で学んでいます。
進めていく中、「2-6 メッセージボードを作ろう」で「circular argument reference」というエラーが発生。
エラーの原因
以下のサイトによると、ruby2.2.0以降から、メソッドの引数のデフォルト値に同じ名前の変数を使おうとするとcircular argument referenceというエラーが発生するようです。
https://qiita.com/a_ishidaaa/items/47a8459aa5fe5512871a
エラーの解決方法
こちらは、キーワード引数に括弧()を付ける事でエラーを解消しました。
修正前 ※以下のコードでエラー発生
def initialize(msg:mag, name:name, mail:mail)
self.name = name
self.mail = mail
self.msg = msg
end
修正後 ※以下のコード修正後、エラー解消
def initialize(msg:mag(), name:name(), mail:mail())
self.name = name
self.mail = mail
self.msg = msg
end
【まとめ】
2.2.0以降はなんでこのような仕様になってしまったのか疑問がありますが、とりあえずはエラー解決できてよかったです。
何かご指摘がありましたらお願いします!ここまで読んで下さり、ありがとうございました!