Following module:
class EnvParams
def self.mailer
environment.mailer
end
def self.router
environment.router
end
def self.sms_gateway
environment.sms_gateway
end
private
def self.environment
@@env ||= Hashie::Mash.new({data: {
mailer: {
address: ENV['DISP_MAILER_SERVER'],
domain: ENV['DISP_MAILER_DOMAIN'],
port: ENV['DISP_MAILER_PORT'],
user_name: ENV['DISP_MAILER_USERNAME'],
password: ENV['DISP_MAILER_PASSWORD'],
sender: ENV['DISP_MAILER_SENDER']
},
router: {
url: ENV['GTC_ROUTER_URL']
},
sms_gateway: {
url: ENV['SMS_GATEWAY_URL']
}
}}).data
end
end
had been created to concentrate all references to environment variables in one file and is intended to be queried for environment variables in such manner:
EnvParams.mailer.password
What I do not like is a bunch of def self.mailer
, def self.router
, def self.sms_gateway
getters - one for each section. If a new section appears, a new getter has to be defined. How to avoid this without having to call an intermediate getter like EnvParams.environment.mailer.password
?