[Groonga-commit] droonga/droonga-client-ruby at 0434f43 [master] Fixup missing fields and validate them for droogna-send command

Back to archive index

Kouhei Sutou kou****@clear*****
Thu Jan 15 15:07:17 JST 2015


In <54B7560A.2010005 �� clear-code.com>
  "Re: [Groonga-commit] droonga/droonga-client-ruby �� 0434f43 [master] Fixup missing fields and validate them for droogna-send command" on Thu, 15 Jan 2015 14:54:18 +0900,
  YUKI Hiroshi <yuki �� clear-code.com> wrote:

> Perfectorはあくまで省略されたidやdateを補うだけの物で、
> Validatorはメッセージに設定されたdate等の情報が正しい形式かを検証する、
> という分け方にしています。
> メッセージに元々不正なdateが設定されていたという場合に、
> Perfectorはそれをスルーして、その後のValidatorが例外を上げる、
> という感じの動きを想定していました。

なるほど。
であれば、PerfectorじゃなくてCompleterだっけ、そっちの方がい
いんじゃないですかねぇ。パーフェクトって「完全」じゃないです
か。完全にするなら不正なdateも直してくれそうな気がします。

「補完」だったら足りないものを補うだけで既存のものがおかしく
ても直さなそうな気がします。


あれ、もしかして、Perfectorに通したあとにValidatorに通す前提
だったらIDがないとかのチェックはせずにdateのフォーマットチェッ
クだけでよかったりしません?


> ただ、Droonga::Clientのレイヤで補完と検証をするように改めたので、ここま
> で厳密にモジュールを分けなくても良かったかもという気はしています。
> 
> 
> Kouhei Sutou wrote:
>>> +  request_message = perfector.perfect(request_message)
>>> +  validator.validate(request_message)
>> 
>> perfectにした後にvalidateするのっておかしくないですか?
>> perfectにしたら必ずvalidationが通りそうなので、する意味がな
>> さそうに思います。
>> 
>> あと、このコミットじゃないですけど、
>> perfector.perfect(request_message)はrequest_messsageを破壊的
>> に変更しないほうがいいと思いました。
>> 
>> In <0434f43f27809dd625dcecfded3f59048339faea �� jenkins.clear-code.com>
>>    "[Groonga-commit] droonga/droonga-client-ruby �� 0434f43 [master] Fixup missing fields and validate them for droogna-send command" on Thu, 15 Jan 2015 14:35:42 +0900,
>>    YUKI Hiroshi <null+groonga �� clear-code.com> wrote:
>> 
>>> YUKI Hiroshi	2015-01-15 14:35:42 +0900 (Thu, 15 Jan 2015)
>>>
>>>    New Revision: 0434f43f27809dd625dcecfded3f59048339faea
>>>    https://github.com/droonga/droonga-client-ruby/commit/0434f43f27809dd625dcecfded3f59048339faea
>>>
>>>    Message:
>>>      Fixup missing fields and validate them for droogna-send command
>>>
>>>    Modified files:
>>>      bin/droonga-send
>>>
>>>    Modified: bin/droonga-send (+7 -0)
>>> ===================================================================
>>> --- bin/droonga-send    2015-01-15 14:34:21 +0900 (0442383)
>>> +++ bin/droonga-send    2015-01-15 14:35:42 +0900 (0dc032f)
>>> @@ -21,6 +21,8 @@ require "yajl"
>>>   require "json"
>>>   
>>>   require "droonga/client"
>>> +require "droonga/client/message_perfector"
>>> +require "droonga/client/message_validator"
>>>   
>>>   options = OpenStruct.new
>>>   options.report_request = false
>>> @@ -33,6 +35,9 @@ servers = []
>>>   default_server = "droonga:localhost:10031/droonga"
>>>   messages_per_second = Droonga::Client::RateLimiter::DEFAULT_LIMIT
>>>   
>>> +perfector = Droonga::Client::MessagePerfector.new
>>> +validator = Droonga::Client::MessageValidator.new
>>> +
>>>   def parse_server(server, options)
>>>     server_matcher = /\A(?:(droonga|http):)?([^:]+)(?::([0-9]+))?(?:\/(.+))?\z/
>>>     server =~ server_matcher
>>> @@ -167,6 +172,8 @@ json_parser.on_parse_complete = lambda do |request_message|
>>>       message << "\n"
>>>       print(message)
>>>     end
>>> +  request_message = perfector.perfect(request_message)
>>> +  validator.validate(request_message)
>>>     client = clients[client_index]
>>>     client.send(request_message)
>>>     client_index = (client_index + 1) % clients.size
>> 
>> _______________________________________________
>> 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/
> 
> _______________________________________________
> Groonga-commit mailing list
> Groonga-commit �� lists.sourceforge.jp
> http://lists.sourceforge.jp/mailman/listinfo/groonga-commit




More information about the Groonga-commit mailing list
Back to archive index