Initial commit
This commit is contained in:
59
app/models/app_host.rb
Normal file
59
app/models/app_host.rb
Normal file
@@ -0,0 +1,59 @@
|
||||
class AppHost
|
||||
attr_reader :env_vars, :current_env
|
||||
|
||||
def initialize(env_vars = ENV, current_env = Rails.env)
|
||||
@env_vars = env_vars
|
||||
@current_env = current_env
|
||||
end
|
||||
|
||||
def domain
|
||||
env_vars.fetch("DOMAIN") { default_domain }
|
||||
end
|
||||
|
||||
def port
|
||||
env_vars.fetch("WEB_PORT") { default_port }
|
||||
end
|
||||
|
||||
def domain_with_port
|
||||
[domain, port].compact.join(":")
|
||||
end
|
||||
|
||||
def protocol
|
||||
using_ssl? ? :https : :http
|
||||
end
|
||||
|
||||
def using_ssl?
|
||||
env_vars.fetch("USE_SSL") { default_use_ssl }
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
DEFAULTS = {
|
||||
development: {
|
||||
host: "localhost",
|
||||
port: 3000,
|
||||
use_ssl: false,
|
||||
},
|
||||
test: {
|
||||
host: "localhost",
|
||||
port: 31337,
|
||||
use_ssl: false,
|
||||
},
|
||||
production: {
|
||||
host: "bigmedia.ai",
|
||||
use_ssl: true,
|
||||
}
|
||||
}
|
||||
|
||||
def default_domain
|
||||
DEFAULTS.dig(current_env.to_sym, :host)
|
||||
end
|
||||
|
||||
def default_port
|
||||
DEFAULTS.dig(current_env.to_sym, :port)
|
||||
end
|
||||
|
||||
def default_use_ssl
|
||||
DEFAULTS.dig(current_env.to_sym, :use_ssl)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user