質問: このような既存クラスへメソッドを追加したい時にどこに書くのが良いという規則はありますか? ``` class Numeric def reciprocal return if self.nil? 1.to_d / self end end ``` 検索してみた結果では新しいものでも5年近く前のもので、少しずつ方法も違ったので今は何か標準的な決まりがあるならそれが知りたいです。 特に決まっていないのであればこちらの `lib/core_ext` ディレクトリ配下に置く方法を使おうと思っています。
回答: 回答になってるか分かりませんが・・ 標準的な決まりはないと思いますよ。 既存のクラスを拡張する(いわゆるモンキーパッチの)場合、railsのautoloadは拾いあげてくれないので、requireを必要とします。 railsには自動的にどこかのディレクトリ内の*.rbをrequireしてくれる機能はありませんよね。 (autoloadのパスでさえ自分で追加してやる必要があります。) つまり、拡張する場合は自分で適当にやってね、というスタンスなんだと私は理解しています。 とはいえ、先に述べた通りモンキーパッチはrequireしてやる必要があるので、それらは1つのディレクトリにまとめておいた方が良いですし、ディレクトリ名で用途が分かる方が良いので、慣習的に`lib/core_ext`に置くのが主流なんじゃないでしょうか。