On this page
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 Show source
static VALUE
refinement_import_methods(int argc, VALUE *argv, VALUE refinement)
{
}
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
Ruby Core © 1993–2022 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.