Skip to content

Commit

Permalink
FEATURE: allow for additional plugin defined global settings
Browse files Browse the repository at this point in the history
  • Loading branch information
SamSaffron committed Jan 1, 2014
1 parent 6a0072d commit 2ad190b
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 4 deletions.
24 changes: 20 additions & 4 deletions app/models/global_setting.rb
Original file line number Diff line number Diff line change
@@ -1,10 +1,17 @@
class GlobalSetting

def self.register(key, default)
define_singleton_method(key) do
provider.lookup(key, default)
end
end

def self.load_defaults
default_provider = FileProvider.from(File.expand_path('../../../config/discourse_defaults.conf', __FILE__))
default_provider.data.each do |name, default|
define_singleton_method(name) do
provider.lookup(name, default)
default_provider.keys.concat(@provider.keys).uniq.each do |key|
default = default_provider.lookup(key, nil)
define_singleton_method(key) do
provider.lookup(key, default)
end
end
end
Expand Down Expand Up @@ -56,6 +63,10 @@ def lookup(key,default)
resolve(var, var.nil? ? default : "")
end

def keys
@data.keys
end


private
def self.parse(file)
Expand All @@ -70,6 +81,10 @@ def lookup(key, default)
var = ENV["DISCOURSE_" << key.to_s.upcase]
resolve(var , var.nil? ? default : nil)
end

def keys
ENV.keys.select{|k| k =~ /^DISCOURSE_/}.map{|k| k[10..-1].downcase.to_sym}
end
end


Expand All @@ -78,8 +93,9 @@ class << self
end


load_defaults
@provider =
FileProvider.from(File.expand_path('../../../config/discourse.conf', __FILE__)) ||
EnvProvider.new

load_defaults
end
9 changes: 9 additions & 0 deletions spec/models/global_setting_spec.rb
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
require 'spec_helper'
require 'tempfile'

describe GlobalSetting::EnvProvider do
it "can detect keys from env" do
ENV['DISCOURSE_BLA'] = '1'
GlobalSetting::EnvProvider.new.keys.should include(:bla)
end
end
describe GlobalSetting::FileProvider do
it "can parse a simple file" do
f = Tempfile.new('foo')
Expand All @@ -20,6 +26,9 @@
provider.lookup(:d,"bob").should == nil
provider.lookup(:e,"bob").should == "bob"

provider.keys.sort.should == [:a, :b, :c, :d]

f.unlink
end

end

0 comments on commit 2ad190b

Please sign in to comment.