Rubyのオープンクラス
オープンクラス
Rubyには定義済みクラスに新しくメソッドを追加する機能があります。これをオープンクラスと言います。
継承やミックスインをせずにクラスを拡張できます。
また、既存のメソッドを上書きすることをモンキーパッチと言います。
class Fixnum def increment self + 1 end end > num = 1234 => 1234 > num.increment => 1235
上のコードではFixnumクラスに新しくincrementというメソッドを追加しました。 下のコードを見てください。
class Fixnum def to_s self + 1 end end > num = 1234 => 1234 > num.to_s => 1235
Fixnumクラスのto_sを上書きして、1を足すコードにしました。これはこの変更を常に意識していないと開発に差し障るでしょう。
オープンクラスは便利だが多用は禁物ですね。
なお、Railsでオープンクラスを使うときはconfig/initializersに拡張したコードを置きます。
gemを自分で拡張したいときに使われます。