【发布时间】:2011-12-29 03:30:58
【问题描述】:
有没有办法避免在使用 configatron gem 时每次都输入命名空间? 说,你有
configatron.email.pop.address = 1
configatron.email.pop.port = 2
我可以通过某种方式只输入一次configatron.email.pop 来配置端口和地址吗?
【问题讨论】:
标签: ruby configuration configatron
有没有办法避免在使用 configatron gem 时每次都输入命名空间? 说,你有
configatron.email.pop.address = 1
configatron.email.pop.port = 2
我可以通过某种方式只输入一次configatron.email.pop 来配置端口和地址吗?
【问题讨论】:
标签: ruby configuration configatron
你可以做的一件简单的事情就是这个。
configatron.email.pop.tap do|pop|
pop.address = 'localhost'
pop.port = 22
end
甚至这个。
pop = configatron.email.pop
pop.address = 'localhost'
pop.port = 22
您也可以尝试向配置器对象添加单例方法。
class << configatron
def pop; email.pop; end
end
configatron.pop.address = 'localhost'
configatron.pop.port = 22
甚至这个。
class << configatron
def pop_address; email.pop.address; end
def pop_address=(addr); email.pop.address = addr; end
end
configatron.pop_address = 'address'
但这最终可能会破坏事情(我假设configatron适用于method_missing)。而且它并没有节省多少打字,但它可以让你创建一些方便的快捷方式来隐藏几个命名空间深处的东西。
也许你应该在这里用冗长的方式坚持下去。
【讨论】:
tap方法吗?