Module: Thoth::Config
- Defined in:
- lib/thoth/config.rb
Class Method Summary collapse
-
.<<(config) ⇒ Object
Adds the specified config Hash to Thoth’s config lookup chain.
-
.load(file) ⇒ Object
Loads the specified configuration file.
- .method_missing(name) ⇒ Object
Class Method Details
.<<(config) ⇒ Object
Adds the specified config Hash to Thoth’s config lookup chain. Any configuration values in config will be used as defaults unless they’re specified earlier in the lookup chain (i.e. in Thoth’s config file).
36 37 38 39 40 41 42 43 |
# File 'lib/thoth/config.rb', line 36 def <<(config) raise ArgumentError, "config must be a Hash" unless config.is_a?(Hash) (@lookup ||= []) << config cache_config @lookup end |
.load(file) ⇒ Object
Loads the specified configuration file.
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/thoth/config.rb', line 46 def load(file) raise Thoth::Error, "Config file not found: #{file}" unless File.file?(file) @live = { 'db' => "sqlite:///#{HOME_DIR}/db/live.db", 'site' => { 'name' => "New Rethoth Blog", 'desc' => "Rethoth is awesome.", 'url' => "http://localhost:7000/", 'core_js' => [ 'http://yui.yahooapis.com/2.8.0/build/yahoo-dom-event/yahoo-dom-event.js', '/js/thoth.js' ], 'css' => [], 'js' => [], 'enable_comments' => true, 'enable_sitemap' => true, 'gravatar' => { 'enabled' => true, 'default' => "identicon", 'rating' => "g", 'size' => 32 } }, 'admin' => { 'name' => "John Doe", 'email' => "", 'user' => "thoth", 'pass' => "thoth", 'seed' => "6d552ac197a862b82b85868d6c245feb" }, 'plugins' => [], 'media' => File.join(HOME_DIR, 'media'), 'server' => { 'adapter' => 'webrick', 'address' => '0.0.0.0', 'port' => 7000, 'enable_cache' => true, 'enable_minify' => true, 'error_log' => File.join(HOME_DIR, 'log', 'error.log'), 'memcache' => { 'enabled' => false, 'servers' => ['localhost:11211:1'] } }, 'timestamp' => { 'long' => "%A %B %d, %Y @ %I:%M %p (%Z)", 'short' => "%Y-%m-%d %I:%M" } } @dev = { 'db' => "sqlite:///#{HOME_DIR}/db/dev.db", 'server' => { 'enable_cache' => false, 'enable_minify' => false } } begin config = YAML.load(Erubis::Eruby.new(File.read(file)).result(binding)) || {} rescue => e raise Thoth::ConfigError, "Config error in #{file}: #{e}" end @lookup ||= if Thoth.trait[:mode] == :production [config['live'] || {}, @live] else [config['dev'] || {}, config['live'] || {}, @dev, @live] end cache_config end |
.method_missing(name) ⇒ Object
132 133 134 |
# File 'lib/thoth/config.rb', line 132 def method_missing(name) (@cached || {})[name.to_s] || {} end |