NULL::something

Login via flickr, はてな, TypeKey.

2004-09-06

Ruby PluginManager 3

initialize にディレクトリ渡して、それ以下のファイルを全て読むようにしてみる。ただし先頭にアンダースコア付いてるときは無視。一定時間ごとに reload_if_modified っつうのを呼び出せば勝手に読み込まれるし、アンダースコアをつければ勝手に開放される。

結局宣言して、インスタンスを作成して適当なクラス変数につっこんだら直ぐに remove_const してみてる。

さーIRCBOT で使ってみよう。

RO チャンネル用に告知巡回と鯖チェック・モンスデータ取得とか。モンスデータは今のところ回避しかやってないけど必中とかもやりたいもんだ。いちいちブラウザ起動するより早い。どっかに生のデータないのかな。ローカルで MySQL に突っ込んだらよさそ。

Trackback URI: http://lowreal.net/logs/2004/09/06/1.trackback

class_eval のブロックを与えたときと文字列を与えたときの違い

このメソッドの挙動がよくわからない。PluginBase.class_eval(%Q|@@irc = irc|) では思ったとおりだけど、PluginBase.class_eval { @@irc = irc } だと uninitilized class variable が出る。とりあえず前者にしとけば動くのでいいけど、なんか気持ち悪い。

プラグイン側に API を提供しようってわけだけど、そんなこと最初考えてなかったとかいうアフォさなので全てのプラグインの先祖としてインターフェイスを宣言している PluginBase のクラス変数に適当なメソッドを持ったオブジェクトを入れておけば、それにアクセスしてアレコレできんじゃねぇかなぁと。(継承したクラスとかでも全て共有されるし)

上の irc は class_eval の前で irc = self とかやってるやつ。だからプラグイン側でオーバーライドしてる on_join メソッド内で @@irc.notice(message, channel) とかやればメッセージが送れるハズ。って自分で書いてて思うけど意味わからん。

あぁ。もしや @@irc も外側ってことになってるのかな。

Inserted at 2004-09-06T16:29:45+09:00

Trackback URI: http://lowreal.net/logs/2004/09/06/2.trackback

NULL

RSS feed meter for http://lowreal.net/logs/latest

Alternates

  1. RSS 1.0
  2. Atom 1.0

Generated with Taglibro

この日記は Taglibro と呼ばれる XML ベースの XSLT をテンプレートとして使ったシステムを使っています。現在の Taglibro は Ruby, ruby-xslt, libxml-ruby による実装です。ソースコードはとりあえず公開していません。