clean up config to use global settings
This commit is contained in:
parent
66afabcf4c
commit
b312b4d563
|
@ -0,0 +1,65 @@
|
|||
class GlobalSetting
|
||||
|
||||
def self.available_settings(*settings)
|
||||
settings.each do |name, desc, default|
|
||||
define_singleton_method(name) do
|
||||
provider.lookup(name, default)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.generate_sample_file(file)
|
||||
end
|
||||
|
||||
available_settings(
|
||||
[:db_pool, "connection pool size", 5],
|
||||
[:db_timeout, "database timeout in milliseconds", 5000],
|
||||
[:db_socket, "socket file used to access db", ""],
|
||||
[:db_host, "host address for db server", "localhost"],
|
||||
[:db_port, "port running db server", 5432],
|
||||
[:db_name, "database name running discourse", "discourse"],
|
||||
[:db_username, "username accessing database", "discourse"],
|
||||
[:db_password, "password used to access the db", ""],
|
||||
[:hostname, "hostname running the forum", "www.example.com"],
|
||||
[:smtp_address, "address of smtp server used to send emails",""],
|
||||
[:smtp_port, "port of smtp server used to send emails", 25],
|
||||
[:smtp_domain, "domain passed to smtp server", ""],
|
||||
[:smtp_user_name, "username for smtp server", ""],
|
||||
[:smtp_password, "password for smtp server", ""],
|
||||
[:smtp_enable_start_tls, "enable TLS encryption for smtp connections", true],
|
||||
[:enable_mini_profiler, "enable MiniProfiler for administrators", true],
|
||||
[:cdn_url, "recommended, cdn used to access assets", ""],
|
||||
[:developer_emails, "comma delimited list of emails that have devloper level access", true],
|
||||
[:redis_host, "redis server address", "localhost"],
|
||||
[:redis_port, "redis server port", 6379],
|
||||
[:redis_password, "redis password", ""]
|
||||
)
|
||||
|
||||
class BaseProvider
|
||||
def lookup(name, val)
|
||||
t = ENV["D_" << name.to_s.upcase]
|
||||
if t.present?
|
||||
t
|
||||
else
|
||||
val.present? ? val : nil
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class FileProvider
|
||||
def self.from(location)
|
||||
end
|
||||
end
|
||||
|
||||
class EnvProvider
|
||||
end
|
||||
|
||||
|
||||
class << self
|
||||
attr_accessor :provider
|
||||
end
|
||||
|
||||
@provider =
|
||||
FileProvider.from(Rails.root + '/config/discourse.conf') ||
|
||||
EnvProvider.new
|
||||
end
|
|
@ -37,15 +37,14 @@ profile:
|
|||
- "localhost"
|
||||
|
||||
production:
|
||||
pool: <%= ENV['POSTGRES_CONNECTION_POOL'] || 5 %>
|
||||
timeout: 5000
|
||||
pool: <%= GlobalSetting.db_pool %>
|
||||
timeout: <%= GlobalSetting.db_timeout %>
|
||||
adapter: postgresql
|
||||
uri: <%= uri = URI.parse(ENV['POSTGRES_URL'] ? ENV['POSTGRES_URL'] : "pg://localhost") %>
|
||||
socket: <%= ENV['POSTGRES_SOCKET'] %>
|
||||
host: <%= ENV['POSTGRES_SOCKET'].present? ? nil : uri.host %>
|
||||
port: <%= uri.port || (ENV['POSTGRES_SOCKET'].present? ? nil : 5432) %>
|
||||
database: <%= ENV['POSTGRES_DB'] || "discourse" %>
|
||||
username: <%= uri.user %>
|
||||
password: <%= uri.password %>
|
||||
socket: <%= GlobalSetting.db_socket %>
|
||||
host: <%= GlobalSetting.db_host %>
|
||||
port: <%= GlobalSetting.db_port %>
|
||||
database: <%= GlobalSetting.db_name %>
|
||||
username: <%= GlobalSetting.db_username %>
|
||||
password: <%= GlobalSetting.db_password %>
|
||||
host_names:
|
||||
- <%= ENV["DISCOURSE_HOSTNAME"] || raise("env var for DISCOURSE_HOSTNAME must be set") if Rails.env == "production" %> # Update this to be the domain of your production site
|
||||
- <%= GlobalSetting.hostname %>
|
||||
|
|
|
@ -32,25 +32,15 @@ Discourse::Application.configure do
|
|||
# the I18n.default_locale when a translation can not be found)
|
||||
config.i18n.fallbacks = true
|
||||
|
||||
# specify your smtp url using the SMTP_URL env var eg:
|
||||
# SMTP_URL=smtp://user:password@myhost.com
|
||||
if ENV.key?('SMTP_URL')
|
||||
config.action_mailer.smtp_settings = begin
|
||||
uri = URI.parse(ENV['SMTP_URL'])
|
||||
params = {
|
||||
:address => uri.host,
|
||||
:port => uri.port || 25,
|
||||
:domain => (uri.path || "").split("/")[1],
|
||||
:user_name => uri.user,
|
||||
:password => uri.password,
|
||||
:authentication => 'plain',
|
||||
:enable_starttls_auto => !ENV['SMTP_DISABLE_TLS']
|
||||
}
|
||||
CGI.parse(uri.query || "").each {|k,v| params[k.to_sym] = v.first}
|
||||
params
|
||||
rescue
|
||||
raise "Invalid SMTP_URL"
|
||||
end
|
||||
if GlobalSetting.smtp_address
|
||||
config.action_mailer.smtp_settings = {
|
||||
address: GlobalSetting.smtp_address,
|
||||
port: GlobalSetting.smtp_port,
|
||||
domain: GlobalSetting.smtp_domain,
|
||||
user_name: GlobalSetting.smtp_password,
|
||||
authentication: 'plain',
|
||||
enable_starttls_auto: GlobalSetting.smtp_enable_start_tls
|
||||
}
|
||||
else
|
||||
config.action_mailer.delivery_method = :sendmail
|
||||
config.action_mailer.sendmail_settings = {arguments: '-i'}
|
||||
|
@ -63,16 +53,16 @@ Discourse::Application.configure do
|
|||
config.handlebars.precompile = true
|
||||
|
||||
# allows admins to use mini profiler
|
||||
config.enable_mini_profiler = !ENV["DISABLE_MINI_PROFILER"]
|
||||
config.enable_mini_profiler = GlobalSetting.enable_mini_profiler
|
||||
|
||||
# Discourse strongly recommend you use a CDN.
|
||||
# For origin pull cdns all you need to do is register an account and configure
|
||||
config.action_controller.asset_host = ENV["CDN_URL"] if ENV["CDN_URL"]
|
||||
config.action_controller.asset_host = GlobalSetting.cdn_url
|
||||
|
||||
# a comma delimited list of emails your devs have
|
||||
# developers have god like rights and may impersonate anyone in the system
|
||||
# normal admins may only impersonate other moderators (not admins)
|
||||
if emails = ENV["DEVELOPER_EMAILS"]
|
||||
if emails = GlobalSetting.developer_emails
|
||||
config.developer_emails = emails.split(",")
|
||||
end
|
||||
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
defaults: &defaults
|
||||
uri: <%= uri = URI.parse(ENV['REDIS_PROVIDER_URL'] || "redis://localhost:6379") %>
|
||||
host: <%= uri.host %>
|
||||
port: <%= uri.port %>
|
||||
password: <%= uri.password %>
|
||||
host: <%= GlobalSetting.redis_host %>
|
||||
port: <%= GlobalSetting.redis_port %>
|
||||
password: <%= GlobalSetting.redis_password %>
|
||||
db: 0
|
||||
cache_db: 2
|
||||
|
||||
|
@ -20,4 +19,4 @@ staging:
|
|||
<<: *defaults
|
||||
|
||||
production:
|
||||
<<: *defaults
|
||||
<<: *defaults
|
||||
|
|
Loading…
Reference in New Issue