data_paths

Description

DataPaths is a library to manage the paths of directories containing static-content across multiple libraries.

For example, DataPaths can manage the data/ directories of multiple RubyGems, in much the same way RubyGems manages the paths of lib/ directories using $LOAD_PATH.

Features

  • Allows libraries to register static-content directories using the register_data_path class or instance method.
  • Allows libraries to unregister a single path using unregister_data_path or all paths registered by that library with unregister_data_paths.
  • Provides helper methods in DataPaths::Finders for searching through the registered static-content directories.
  • Does not use global variables.

Examples

Register a directory containing static-content:

require 'data_paths'

module MyLibrary
  include DataPaths

  # define the data dir(s)
  register_data_path File.join(File.dirname(__FILE__),'..','..','data')
end

List previously registered static-content directories:

# all data directories
DataPaths.paths
# => [...]

# the data directories registeed in MyLibrary
MyLibrary.data_paths
# => [...]

# list data directories registered in an object
lib = MyLibrary.new
lib.register_data_path File.join('path','to','data')

lib.data_paths
# => [...]

Using DataPaths::Finders to access content from within the static-content directories:

module MyLibrary
  class UsesContent

    include DataPaths::Finders

    def index
      find_data_file('index.html')
    end

    def file_dirs
      all_data_dirs('extra')
    end

  end
end

Install

$ gem install data_paths

Copyright (c) 2011-2012 Hal Brodigan

See LICENSE for license information.