Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Allows namespaces to load constants on-demand
Ruby
tag: v0.3.2

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
spec
.gemtest
.gitignore
.rspec
.yardopts
ChangeLog.md
LICENSE.txt
README.md
Rakefile
gemspec.yml
open_namespace.gemspec

README.md

OpenNamespace

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.

Something went wrong with that request. Please try again.