Sha256: a5f3db96e5b0b459242f50676531e9caf900db5af75470157d1970b4feb34e5d

Contents?: true

Size: 1.74 KB

Versions: 1

Compression:

Stored size: 1.74 KB

Contents

# encoding: UTF-8

module Spontaneous
  class Site < Spontaneous::Facet
    extend Plugins

    plugin Plugins::Site::Instance
    plugin Plugins::Site::Publishing
    plugin Plugins::Site::Revisions
    plugin Plugins::Site::Selectors
    plugin Plugins::Site::Map

    attr_accessor :database
    attr_reader :environment, :mode

    def initialize(root, env, mode)
      super(root)
      @environment, @mode = env, mode
    end

    def initialize!
      load_config!
      connect_to_database!
      find_plugins!
      load_facets!
      init_facets!
    end

    def init_facets!
      facets.each do |facet|
        facet.init!
      end
    end

    def load_facets!
      Spontaneous::Loader.load!
    end

    def load_paths
      load_paths = []
      [:lib, :schema].each do |category|
        facets.each do |facet|
          load_paths += facet.paths.expanded(category)
        end
      end
      load_paths
    end

    def connect_to_database!
      self.database = Sequel.connect(db_settings)
      self.database.logger = logger if config.log_queries
    end

    def db_settings
      config_dir = paths.expanded(:config).first
      @db_settings = YAML.load_file(File.join(config_dir, "database.yml"))
      self.config.db = @db_settings[environment]
    end

    def config
      @config ||= Spontaneous::Config.new(environment, mode)
    end

    def find_plugins!
      paths.expanded(:plugins).each do |glob|
        Dir[glob].each do |path|
          load_plugin(path)
        end
      end
    end

    def plugins
      @plugins ||= []
    end

    def facets
      [self] + plugins
    end

    def load_plugin(plugin_root)
      plugin = Spontaneous::Application::Plugin.new(plugin_root)
      self.plugins <<  plugin
      plugin
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
spontaneous-0.1.0.alpha1 lib/spontaneous/site.rb