【问题标题】:configatron shorthand for namespaces命名空间的配置简写
【发布时间】:2011-12-29 03:30:58
【问题描述】:

有没有办法避免在使用 configatron gem 时每次都输入命名空间? 说,你有

  configatron.email.pop.address = 1
  configatron.email.pop.port = 2

我可以通过某种方式只输入一次configatron.email.pop 来配置端口和地址吗?

【问题讨论】:

    标签: ruby configuration configatron


    【解决方案1】:

    你可以做的一件简单的事情就是这个。

    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方法吗?
    猜你喜欢
    • 2019-06-08
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 2015-12-10
    • 1970-01-01
    • 1970-01-01
    • 2016-01-17
    相关资源
    最近更新 更多