以下模塊:獲取從類類變量直接
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
獲得者 - 每個部分一個。如果出現新的部分,則必須定義新的吸氣劑。如何避免這種情況,而不必調用EnvParams.environment.mailer.password
這樣的中間吸氣劑?
太棒了!這裏有一些提升:如果@@ env'不包含請求的名字,則拋出'NoMethodError'異常。 – Paul 2014-09-05 07:02:03