File: class_extend.rb

# class_extend.rb

Path: | lib/more/facets/module/class_extend.rb
Last Update: | Tue Aug 10 17:25:06 -0600 2010

# Class Extension

Normally when including modules, class/module methods are not extended. To achieve this behavior requires some clever Ruby Karate. Instead class_extension provides an easy to use and clean solution. Simply place the extending class methods in a block of the special module method class_extension.

      module Mix
        def inst_meth
          puts 'inst_meth'
        end

        class_extend do
          def class_meth
            "Class Method!"
          end
        end
      end

      class X
        include Mix
      end

      X.class_meth  #=> "Class Method!"

## History

Thanks to Trans, Nobu and Ulysses for their original on this concept.

## Authors

- Daniel Schierbeck
- Thomas Sawyer
- Nobu Nakada
- Ulysses

## Copying

Copyright (c) 2006 Daniel Schierbeck

Ruby License

This module is free software. You may use, modify, and/or redistribute this software under the same terms as Ruby.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

[Validate]