Sha256: 9a55884e27f9acf426e48fbeecbad4e24ec94fe1cd97765d7a3fccc6a76bac53

Contents?: true

Size: 1.86 KB

Versions: 2

Compression:

Stored size: 1.86 KB

Contents

require 'redis'
require 'pathname'

require 'wolverine/version'
require 'wolverine/configuration'
require 'wolverine/script'
require 'wolverine/path_component'
require 'wolverine/lua_error'

class Wolverine
  # Returns the configuration object for reading and writing
  # configuration values.
  #
  # @return [Wolverine::Configuration] the configuration object
  def self.config
    @config ||= Configuration.new
  end

  # Provides access to the redis connection currently in use by Wolverine.
  #
  # @return [Redis] the redis connection used by Wolverine
  def self.redis
    config.redis
  end

  # Resets all the scripts cached by Wolverine. Scripts are lazy-loaded and
  # cached in-memory, so if a file changes on disk, it will be necessary to
  # manually reset the cache using +reset!+.
  #
  # @return [void]
  def self.reset!
    @root_directory = nil
  end

  # Used to handle dynamic accesses to scripts. Successful lookups will be
  # cached on the {PathComponent} object. See {PathComponent#method_missing}
  # for more detail on how this works.
  #
  # @return [PathComponent, Object] a PathComponent if the method maps to a
  #   directory, or an execution result if the the method maps to a lua file.
  def self.method_missing sym, *args
    root_directory.send(sym, *args)
  rescue PathComponent::MissingTemplate
    super
  end

  def initialize(config = nil)
    @config = config
  end

  def config
    @config || self.class.config
  end

  def redis
    config.redis
  end

  def reset!
    @root_directory = nil
  end

  def method_missing sym, *args
    root_directory.send(sym, *args)
  rescue PathComponent::MissingTemplate
    super
  end

  private

  def self.root_directory
    @root_directory ||= PathComponent.new(config.script_path)
  end

  def root_directory
    @root_directory ||= PathComponent.new(config.script_path, {:config => config, :redis => redis})
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
wolverine-0.3.0 lib/wolverine.rb
wolverine-0.2.5 lib/wolverine.rb