class Amber::SiteConfiguration
Attributes
children[RW]
an array of SiteConfigurations that are attached as sub-sites to this one.
config_dir[RW]
config_file[RW]
default_locale[RW]
dest_dir[RW]
layouts_dir[RW]
locales[RW]
locales_dir[RW]
pages_dir[RW]
pagination_size[RW]
path[RW]
path_prefix[RW]
root_dir[RW]
short_paths[RW]
timestamp[RW]
title[RW]
Public Class Methods
load(site, root_dir, options={})
click to toggle source
CLASS METHODS
# File lib/amber/site_configuration.rb, line 46 def self.load(site, root_dir, options={}) SiteConfiguration.new(site, root_dir, options) end
new(site, root_dir, options={})
click to toggle source
accepts a file_path to a configuration file.
# File lib/amber/site_configuration.rb, line 57 def initialize(site, root_dir, options={}) @children = [] @path_prefix = nil @site = site @root_dir = File.expand_path(find_in_directory_tree('amber', 'config.rb', root_dir)) if @root_dir == '/' puts "Could not find amber/config.rb in the directory tree. Run `amber` from inside an amber website directory" exit(1) end @pages_dir = File.join(@root_dir, 'pages') @dest_dir = File.join(@root_dir, 'public') @config_dir = File.join(@root_dir, 'amber') @config_file = config_path('config.rb') @menu_file = config_path('menu.txt') @locales_dir = config_path('locales') @layouts_dir = config_path('layouts') @title = "untitled" @pagination_size = 20 @menu = Menu.new('root') @menu.load(@menu_file) if @menu_file self.eval @path_prefix = options[:path_prefix] if options[:path_prefix] self.cleanup reset_timestamp Render::Layout.load(@layouts_dir) end
Public Instance Methods
cleanup()
click to toggle source
# File lib/amber/site_configuration.rb, line 96 def cleanup @locale ||= I18n.default_locale I18n.default_locale = @locale @locales ||= [@locale] @locales.map! {|locale| if Amber::POSSIBLE_LANGUAGE_CODES.include?(locale.to_s) locale.to_sym else nil end }.compact if @path_prefix @path_prefix.gsub!(%r{^/|/$}, '') @path_prefix = nil if @path_prefix == '' end end
config_path(file)
click to toggle source
# File lib/amber/site_configuration.rb, line 121 def config_path(file) path = File.join(@config_dir, file) if File.exist?(path) path else nil end end
eval()
click to toggle source
def pages_changed?
self.changed? || @children.detect {|child| child.changed?}
end
# File lib/amber/site_configuration.rb, line 117 def eval self.instance_eval(File.read(@config_file), @config_file) end
find_in_directory_tree(target_dir_name, target_file_name, directory_tree=nil)
click to toggle source
# File lib/amber/site_configuration.rb, line 134 def find_in_directory_tree(target_dir_name, target_file_name, directory_tree=nil) search_dir = directory_tree || Dir.pwd while search_dir != "/" Dir.foreach(search_dir) do |f| if f == target_dir_name && File.exist?(File.join(search_dir, f,target_file_name)) return search_dir end end search_dir = File.dirname(search_dir) end return search_dir end
map(path_to_directory_source, options={})
click to toggle source
map('/path' => '../othersite')
# File lib/amber/site_configuration.rb, line 90 def map(path_to_directory_source, options={}) path, root_dir = path_to_directory_source.to_a.first config = self.load(@site, root_dir, {:path_prefix => path}) @site.add_config(config) end
reset_timestamp()
click to toggle source
# File lib/amber/site_configuration.rb, line 130 def reset_timestamp @timestamp = File.mtime(@pages_dir) end