約束の地

キャロ組

Rails で既存クラスにメソッドを追加(オープンクラス)したが適用されない

結論

Rails の再起動を行っていなかった

経緯

既存の String クラスにメソッドを追加しようと、まずは下記の記事(とても分かりやすい)を参考にlib/extを作ってその配下に拡張するコード(ファイル)を追加しました。さらにconfig/initializers/配下にextensions.rbを作ってrequireしました。

しかし、undefined methodエラーが……。

根本的な理由

以下にあります。

すなわち、

app/以下のファイルとconfig/routes.rbの変更は再起動が不要、それ以外は再起動が必要

です。こういう理由なので、今回のようなケースに限らず、再起動を適切に行なっていないと変更内容が反映されないというケースは多々あると思います。今後、気をつけます。

それにしても、またハマりました……。

Powered by はてなブログ