こんにちは。ウェブ開発担当の清水です。 Ruby 2.0 で実験的に導入されていた Refinements が、バージョン 2.1 より正式に導入となりました。 今回はこの機能を利用してクラスの拡張をしてみたいと思います。 オープンクラス Refinements とはクラスの拡張の範囲を限定する機能です。使用の前に、まず Ruby のオープンクラスについて説明します。 オープンクラスとは、既存クラスを再定義(再オープン)することで、メソッドの追加・上書きなどが容易にできる機能です。 この機能により組み込みクラスであっても自由に拡張できるため、使い道次第で強力な効果を発揮します。 以下の例では、 Array クラスへ bogo_sort! メソッドを追加することで、全ての Array インスタンスから呼び出せるようにしています。 class Array def bogo_sort! shuf