22140


このような既存クラスへメソッドを追加したい時にどこに書くのが良いという規則はありますか？

[code]

    class Numeric
      def reciprocal
        return if self.nil?
        1.to_d / self
      end
    end
    
[/code]

検索してみた結果では新しいものでも5年近く前のもので、少しずつ方法も違ったので今は何か標準的な決まりがあるならそれが知りたいです。

<https://stackoverflow.com/questions/5654517/in-ruby-on-rails-to-extend-the-
string-class-where-should-the-code-be-put-in>  
<https://stackoverflow.com/questions/677034/adding-a-method-to-built-in-class-
in-rails-app>  
<https://stackoverflow.com/questions/7490680/in-rails-how-to-add-a-new-method-
to-string-class>

特に決まっていないのであれば[こちら](https://stackoverflow.com/a/5654580/1536527)の
`lib/core_ext` ディレクトリ配下に置く方法を使おうと思っています。


CC BY-SA 3.0
2016-02-14T02:56:17.967
22060
2016-02-16T02:24:12.273
2017-05-23T12:38:55.250
-1
3271
question
ruby-on-rails
Railsで既存クラスへのメソッド追加をする時のファイルの置き場所


回答になってるか分かりませんが・・  
標準的な決まりはないと思いますよ。

既存のクラスを拡張する（いわゆるモンキーパッチの）場合、railsのautoloadは拾いあげてくれないので、requireを必要とします。  
railsには自動的にどこかのディレクトリ内の*.rbをrequireしてくれる機能はありませんよね。  
（autoloadのパスでさえ自分で追加してやる必要があります。）

つまり、拡張する場合は自分で適当にやってね、というスタンスなんだと私は理解しています。

とはいえ、先に述べた通りモンキーパッチはrequireしてやる必要があるので、それらは１つのディレクトリにまとめておいた方が良いですし、ディレクトリ名で用途が分かる方が良いので、慣習的に`lib/core_ext`に置くのが主流なんじゃないでしょうか。


CC BY-SA 3.0
2016-02-16T02:24:12.273
22140
2016-02-16T02:24:12.273
9608
22060
answer