class Refinement - RDoc Documentation

# class Refinement

`Refinement` is a class of the `self` (current context) inside `refine` statement. It allows to import methods from other modules, see `import_methods`.

### Public Instance Methods

import_methods(module, ...) → self click to toggle source

Imports methods from modules. Unlike `Module#include`, `Refinement#import_methods` copies methods and adds them into the refinement, so the refinement is activated in the imported methods.

Note that due to method copying, only methods defined in Ruby code can be imported.

    module StrUtils
      def indent(level)
        ' ' * level + self
      end
    end

    module M
      refine String do
        import_methods StrUtils
      end
    end

    using M
    "foo".indent(3)
    #=> "   foo"

    module M
      refine String do
        import_methods Enumerable
        # Can't import method which is not defined with Ruby code: Enumerable#drop
      end
    end

    static VALUE
    refinement_import_methods(int argc, VALUE *argv, VALUE refinement)
    {
    }