From: "shugo (Shugo Maeda)" Date: 2013-06-27T18:19:35+09:00 Subject: [ruby-core:55671] [CommonRuby - Feature #8571][Assigned] Refinement inheritance by Module#include Issue #8571 has been reported by shugo (Shugo Maeda). ---------------------------------------- Feature #8571: Refinement inheritance by Module#include https://bugs.ruby-lang.org/issues/8571 Author: shugo (Shugo Maeda) Status: Assigned Priority: Normal Assignee: matz (Yukihiro Matsumoto) Category: Target version: Currently, refinements are not inherited by Module#include. How about to make using to activate refinements in the ancestors of the specified module? For example, module A refine X do ... end refine Y do ... end end module B refine Z do ... end end module C include A include B end using C # Refinements in A and B are activated here. In this code, using C is equivalent to C.ancestors.reverse_each { |m| using m } This feature enables you to distribute refinements into different modules, and then package the refinements into one module. Please note that Module#include does't activate refinements in the argument module. For example, module C include A include B # Refinements in A and B are not activated here. end I've implemented this feature, and have attached the patch. -- http://bugs.ruby-lang.org/