【发布时间】:2014-10-29 08:06:34
【问题描述】:
以下模块:
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
已创建以将所有对环境变量的引用集中在一个文件中,并旨在以这种方式查询环境变量:
EnvParams.mailer.password
我不喜欢一堆def self.mailer、def self.router、def self.sms_gateway getter - 每个部分一个。如果出现新部分,则必须定义新的 getter。如何避免这种情况而不必调用像 EnvParams.environment.mailer.password 这样的中间吸气剂?
【问题讨论】:
标签: ruby