Skip to content
Allows namespaces to load constants on-demand
Ruby
Failed to load latest commit information.
lib
spec Added ClassMethods#const_defined? to attempt loading constants. Nov 19, 2011
.document
.gemtest
.gitignore
.rspec
.yardopts
ChangeLog.md
LICENSE.txt Updated the copyright dates. May 27, 2012
README.md
Rakefile Use rubygems-tasks ~> 0.1. Apr 24, 2012
gemspec.yml https://github links. May 27, 2012
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_defined?.
  • 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-2012 Hal Brodigan

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

Something went wrong with that request. Please try again.