Sha256: 51d46e92aa523826dc6f3d8381ffe3664c9d67df1f3e4ee51f37bfc9f3754c0e

Contents?: true

Size: 895 Bytes

Versions: 17

Compression:

Stored size: 895 Bytes

Contents

module Spec
  module Example
    # When you reopen a module that is included in another module that is included in a class,
    # the new material you define does not make it to the class. This fixes that.
    # 
    # == Example
    # 
    #   module M1; end
    # 
    #   module M2
    #     def foo; "FOO"; end
    #   end
    # 
    #   class C
    #     include M1
    #   end
    # 
    #   module M1
    #     include M2
    #   end
    # 
    #   c = C.new
    #   c.foo
    #   NoMethodError: undefined method `foo' for #<C:0x5e89a4>
    #     from (irb):12
    module ModuleReopeningFix
      def child_modules
        @child_modules ||= []
      end

      def included(mod)
        child_modules << mod
      end

      def include(mod)
        super
        child_modules.each do |child_module|
          child_module.__send__(:include, mod)
        end
      end
    end
  end
end

Version data entries

17 entries across 17 versions & 2 rubygems

Version Path
dchelimsky-rspec-1.1.99.1 lib/spec/example/module_reopening_fix.rb
dchelimsky-rspec-1.1.99.13 lib/spec/example/module_reopening_fix.rb
dchelimsky-rspec-1.1.99.2 lib/spec/example/module_reopening_fix.rb
dchelimsky-rspec-1.1.99.3 lib/spec/example/module_reopening_fix.rb
dchelimsky-rspec-1.1.99.4 lib/spec/example/module_reopening_fix.rb
dchelimsky-rspec-1.1.99.5 lib/spec/example/module_reopening_fix.rb
dchelimsky-rspec-1.1.99.6 lib/spec/example/module_reopening_fix.rb
dchelimsky-rspec-1.1.99.7 lib/spec/example/module_reopening_fix.rb
dchelimsky-rspec-1.1.99.8 lib/spec/example/module_reopening_fix.rb
dchelimsky-rspec-1.1.99.9 lib/spec/example/module_reopening_fix.rb
rspec-1.2.2 lib/spec/example/module_reopening_fix.rb
rspec-1.2.1 lib/spec/example/module_reopening_fix.rb
rspec-1.2.0 lib/spec/example/module_reopening_fix.rb
rspec-1.2.6 lib/spec/example/module_reopening_fix.rb
rspec-1.2.3 lib/spec/example/module_reopening_fix.rb
rspec-1.2.5 lib/spec/example/module_reopening_fix.rb
rspec-1.2.4 lib/spec/example/module_reopening_fix.rb