classX

インスタンスからdefaultを呼ぶ

http://d.hatena.ne.jp/fbis/20080918/1221717538metaクラスからたどって直接呼び出した方がわかりやすいんではないかと思ったりしました。 package Foo; use Moose; has hoge => ( is => 'rw', lazy => 1, default => sub { 100 }, ); __PACKAGE__->meta->m…

継承可能なクラス属性

Rubyのクラス属性まわりは個人的には結構ややこしいと思っています。クラスに保存できるデータには以下のようなものがあります。 クラス変数 クラスローカル変数( クラスインスタンス変数? ) メソッド クラス変数 @@variableのように表記します。以下1.8での…

JSONからIRCにポストするやつ

以前 http://d.hatena.ne.jp/walf443/20080523/1211497763 でGithubのHookを受けてIRCにポストしたりするやつを紹介したのですが、Github以外の場合からも同じコネクションを叩きたかったりしたので、その部分を分離してJSONから叩けるようにしてみました。c…

ClassX::Role::Logger

ClassXなクラスにこいつをincludeしてやると、標準ライブラリのloggerがattributeとして使えるようになります。 require 'classx/role/logger' class YourApp include ClassX extends ClassX::Commandable include ClassX::Role::Logger def run self.logger…

ClassXがclassからmoduleになりました

東京Ruby会議01で発表したところ、ClassXがclassじゃなくてmoduleの方が便利じゃね?とか、使いたいけど、classになってるばかりに使えなさそう。と言う声が多かったので、どうせ誰も使ってないよね?ということで変えてしまいまいた。つまりこういうふうに使…

ClassX::Commandableで簡単CLIアプリ

東京Ruby会議の懇親会で一番反響が良かったのはClassX::Commandableだったということでブログでもあたらめて紹介しておく。MooseにはMooseX::GetoptとかMooseX::App::Cmdという便利なモジュールがあったのでMooseX::GetoptをパクってClassX::Commandableとい…

東京Ruby会議01で発表しました

Akasaka.rbの活動の一環として東京Ruby会議01でClassXについて発表してきました。スライドは http://github.com/walf443/classx/tree/master%2Fdoc%2FTokyoRubyKaigi01_classX.pdf?raw=trueからDLできます。発表すると、 http://github.com/walf443/classx/t…

ClassX::Declare

東京Ruby会議01で高井さんにどうよといわれたやつ。 http://github.com/walf443/classx/tree/28f1694a54968cb56c674fe62a6f2b6ad35a46b9/lib/classx/declare.rb↑のやつには使うとどんな風にできるかの説明がなかったので書いておきます。http://gist.github.…

ClassX::ValidateでHashをチェックする

http://d.hatena.ne.jp/rubikitch/20080710/1215641240メソッドの引数にHashをとるのはいっぱいあるときでもきれいに書けるので個人的にはあまり嫌いではない。classXを使うとHashのチェックが柔軟にできるよというおはなし。 require 'classx/validate' cla…

デフォルトのオプションと:isおよび:requiredオプションの廃止

classXで、Mooseをなぞるのをやめてアクセサの宣言のデフォルトの設定を変更しました。 :writableオプションを指定しない限りは、アクセサはwriterをpublicにしないようになりました。これは、単にreaderを定義する時は、オプションを明示的に定義する必要は…

メソッドの渡すHashもきっちりチェックしたい

http://d.hatena.ne.jp/walf443/20080524/1211650071前の記事でコンストラクタに渡せるHashのキーと値を宣言的に書くことで見通しが良くなると書きましたが、コンストラクタに限らず、メソッドにオプションとして渡すHashもきっちりチェックしたいはず。とい…

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…

Mooseっぽい柔軟なアクセサ

最近perl界隈で話題のMooseをちょくちょく弄ってみたりしているのですが、宣言的なアクセサは見通しも良くなるし、なかなか良いなと思ったんでRubyでもそれっぽく動作するやつを書いてみました。Mooseっぽくコンストラクタも勝手に用意するようにしてみたの…