読者です 読者をやめる 読者になる 読者になる

classXを使うと何がうれしいか

ruby classx

http://d.hatena.ne.jp/walf443/20080520/1211239672

で触れた宣言的なアクセサをGitHubPostRecieverに試しに適用してみた

+      has :host, :is => :ro, :kind_of => String, :required => true
+      has :port, :is => :ro, :kind_of => Integer, :default => 6667
+      has :nick, :is => :ro, :kind_of => String, :required => true
+      has :user, :is => :ro, :kind_of => String, :lazy => true, :default => proc {|mine| mine.nick }
+      has :real, :is => :ro, :kind_of => String, :lazy => true, :default => proc {|mine| mine.nick }
+      has :template, :is => :ro, :kind_of => String, :required => true
+
       def run method, json
-        json['commits'].each do |sha, commit|
-          CommitPingBot.new(@config['host'], @config['port'], {
-            'nick', @config['nick'],
-            'user', @config['user'],
-            'real', @config['real'],
-          }).run("##{method}", View.new(@config['template'], commit).result)
+        json['commits'].reverse.each do |sha, commit|
+          CommitPingBot.new(@host, @port, {
+            'nick' => @nick,
+            'user' => @user,
+            'real' => @real,
+          }).run("##{method}", View.new(@template, commit).result)
         end
       end
     end

元々のクラスだと、@configの中にどんな設定ができるのかということがわかりづらかったのですが、アクセサにしてしまえば、どの設定が必須なのかとかどんな値を指定すれば良いかが一目瞭然ですね。