YUKI Hiroshi
yuki****@clear*****
Tue Apr 21 13:23:21 JST 2015
Droonga::Serf自身で初期化処理をするという限定された場面で必要になってこ うしたのですが、確かに複雑になりすぎていました。 クラスタ情報の初期化処理のトリガーがすでに外部にあるので、同じ箇所でタグ 情報の初期化も行うように改めました。 Kouhei Sutou wrote: >> + def on_ready=(callback) >> + @on_ready_callbacks ||= [] >> + if callback >> + @on_ready_callbacks << callback >> + else >> + @on_ready_callbacks.clear >> + end >> + callback >> + end > > このAPIはやり過ぎじゃないですかねぇ。 > たぶん、互換性を維持しようとしてこうなったんだと思いますけど、 > 字面から想像する動きと実際の動きが違うので後でつらくなると思 > います。 > > 通常、 > > xxx.on_ready = XXX > > という見た目のコードではXXXで「置き換える」という動きを想像 > しますが、実際は「追加する」なので、わかりにくくなると思いま > す。 > > def on_ready_callbacks > @on_ready_callbacks ||= [] > end > > private > def on_ready > on_ready_callbacks.each do |callback| > callback.call > end > end > > にしちゃっていいんじゃないでしょうか。 > > で、使うときはこう。 > > xxx.on_ready_callbacks << lambda do > # ... > end > > In <e8e0e23ecf1a5336baf2a4bfaac2a79de8e41929 �� jenkins.clear-code.com> > "[Groonga-commit] droonga/droonga-engine �� e8e0e23 [master] Make Deferrable module to accept multiple "on_ready" callbacks" on Tue, 21 Apr 2015 11:02:52 +0900, > YUKI Hiroshi <null+groonga �� clear-code.com> wrote: > >> YUKI Hiroshi 2015-04-21 11:02:52 +0900 (Tue, 21 Apr 2015) >> >> New Revision: e8e0e23ecf1a5336baf2a4bfaac2a79de8e41929 >> https://github.com/droonga/droonga-engine/commit/e8e0e23ecf1a5336baf2a4bfaac2a79de8e41929 >> >> Message: >> Make Deferrable module to accept multiple "on_ready" callbacks >> >> Modified files: >> lib/droonga/deferrable.rb >> >> Modified: lib/droonga/deferrable.rb (+16 -2) >> =================================================================== >> --- lib/droonga/deferrable.rb 2015-04-21 10:45:00 +0900 (2b0dee4) >> +++ lib/droonga/deferrable.rb 2015-04-21 11:02:52 +0900 (1977c52) >> @@ -15,7 +15,7 @@ >> >> module Droonga >> module Deferrable >> - attr_writer :on_ready, :on_failure >> + attr_writer :on_failure >> >> def wait_until_ready(target) >> target.on_ready = lambda do >> @@ -23,9 +23,23 @@ module Droonga >> end >> end >> >> + def on_ready=(callback) >> + @on_ready_callbacks ||= [] >> + if callback >> + @on_ready_callbacks << callback >> + else >> + @on_ready_callbacks.clear >> + end >> + callback >> + end >> + >> private >> def on_ready >> - @on_ready.call if @on_ready >> + if @on_ready_callbacks >> + @on_ready_callbacks.each do |callback| >> + callback.call >> + end >> + end >> end >> >> def on_failure > > _______________________________________________ > Groonga-commit mailing list > Groonga-commit �� lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/groonga-commit > -- 結城 洋志 <YUKI Hiroshi> E-mail: yuki �� clear-code.com 株式会社クリアコード 〒170-0005 東京都豊島区南大塚3-29-9 中野ビル3階 TEL : 03-5927-9440 FAX : 03-5927-9441 WWW : http://www.clear-code.com/