1

configatron gemを使用するときに、毎回名前空間を入力しないようにする方法はありますか?言う、あなたは持っています

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

どういうわけか一度だけ入力してポートとアドレスを設定できますconfigatron.email.popか?

4

1 に答える 1

1

あなたができる簡単なことの1つはこれです。

configatron.email.pop.tap do|pop|
  pop.address = 'localhost'
  pop.port = 22
end

またはこれさえ。

pop = configatron.email.pop
pop.address = 'localhost'
pop.port = 22

configatronオブジェクトにシングルトンメソッドを追加することもできます。

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で動作すると思います)。また、タイピングをあまり節約できませんが、いくつかの名前空間の奥深くに隠されているものへの便利なショートカットを作成できます。

たぶん、ここでは冗長性を持ってそれを突き出すべきです。

于 2011-11-15T02:08:14.220 に答える