Sha256: 2aada7c8467877f3f74b7cbaec1b386a7176ebf8c89e989e69d1f4da6f4fb132

Contents?: true

Size: 1.81 KB

Versions: 1

Compression:

Stored size: 1.81 KB

Contents

# OpenNamespace

* [Source](http://github.com/postmodern/open_namespace)
* [Issues](http://github.com/postmodern/open_namespace/issues)
* [Documentation](http://rubydoc.info/gems/open_namespace/frames)
* [Email](mailto:postmodern.mod3 at gmail.com)

## Description

OpenNamespace allows namespaces to require and find classes and modules from
RubyGems. Using OpenNamespace you can make a `Plugins` module able to
load plugin modules/classes from other gems.

## Features

* Provides implicit loading of constants via `const_missing`.
* Provides explicit loading of constants via `require_const`.

## Examples

Explicit and implicit loading of constants:

    require 'open_namespace'

    module Project
      module Plugins
        include OpenNamespace
      end
    end

    # explicitly load constants
    Project::Plguins.require_const :foo_bar
    # => Project::Plugins::FooBar

    # explicitly load constants with odd capitalization
    Project::Plugins.require_const :tcp_session
    # => Project::Plugins::TCPSession

    # explicitly load constants via sub-paths
    Project::Plguins.require_const 'templates/erb'
    # => Project::Plugins::Templates::Erb

    # implicitly load constants via const_missing
    Project::Plugins::Other
    # => Project::Plugins::Other

Loading constants from alternate namespace root directories:

    module Project
      module UI
        module CommandLine
          module Commands
            include OpenNamespace

            self.namespace_root = File.join('project','ui','command_line','commands')
          end
        end
      end
    end

    Project::UI::CommandLine::Commands.require_const :help
    # => Project::UI::CommandLine::Commands::Help

## Install

    $ gem install open_namespace

## License

Copyright (c) 2010-2011 Hal Brodigan

See {file:LICENSE.txt} for license information.

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
open_namespace-0.3.2 README.md