[#42196] YAML でEUC は使えないのでしょうか。 — Tomokiyo Nomura <tnomura@...>
野村@延岡です。
8 messages
2006/05/05
[#42214] [ANN] RubyKaigi 2006 Announcement — SASADA Koichi <ko1@...>
日本Rubyの会、日本Rubyカンファレンス2006実行委員のささだです。
4 messages
2006/05/10
[#42235] ftp:// のリストを open-uri で得られないでしょうか — "Hideo Konami" <konami@...>
小波です。
5 messages
2006/05/20
[#42243] コミュニティと宗教の分離について — Beyond <beyond@...>
14 messages
2006/05/21
[#42253] File objectがいつのまにか nilに、 — しん <dezawa@...>
出沢です
9 messages
2006/05/23
[#42267] メニューのループについて — リックス <rubyer4649@...>
りっくすです
21 messages
2006/05/27
[#42275] Re: メニューのループについて
— rubikitch <rubikitch@...>
2006/05/27
From: リックス <rubyer4649@yahoo.co.jp>
[#42276] Re: メニューのループについて
— Hiroshi Yuki <hyuki@...>
2006/05/27
結城です。
[#42301] Re: メニューのループについて — "conundrum /" <conundrum@...>
conundrumです。
11 messages
2006/05/28
[#42306] Re: メニューのループについて
— rubikitch <rubikitch@...>
2006/05/29
From: "conundrum /" <conundrum@hotmail.co.jp>
[ruby-list:42200] 終了時の状態をPStoreに保存したい
From:
石井 大海 <banzaida@...>
Date:
2006-05-06 02:56:12 UTC
List:
ruby-list #42200
こんにちは、konnです。
今、プラグインによって機能を追加できるIRC用のボットエンジ
ンを作っています。
具体的にどういう仕組みかというと、まずそれぞれのプラグインは
MyDelクラスを継承し、
なにかメッセージが届いたら、全てを纏める親ボットの、IRCBEx
クラスから情報を受け取ります。
各MyDelは、@_objに、IRCBExを持っており、知らな
いメソッドが呼び出されたら
method_missing経由で@_objのメソッドを呼び出しに行く、とい
う仕組みです。
このとき、各プラグインから@_obj.configでアクセスできるハッ
シュをつくり、
Botを終了したときに、PStoreでHDにその情報を保存させ
ようと思っています。
最初、add_finalizerをつかって以下のように実装してみました。
class IRCBEx
attr_accessor :bots, :config, :db
def IRCBEx.callback()
proc {|anid|
begin
puts "finalized."
@db.transaction {|db|
db[:config] = @config
}
rescue
puts $!,$@
end
}
end
def initialize(*args)
@_bots = []
@db = PStore.new args.fetch(7, "dbs/ircb.db")
@config = {}
@db.transaction {|db|
@db[:config] = {} unless db.root?(:config)
@config = @db[:config]
}
ObjectSpace.define_finalizer(self, IRCBEx.callback)
super *args[0..6]
end
end
しかし、これだと上手く動かなかったので、次のように修正してみまし
た。
def IRCBEx.callback()
proc {|anid|
begin
puts "finalized."
p anid
ObjectSpace._id2ref(anid).transaction {|db|
db[:config] = ObjectSpace._id2ref(anid). config
}
rescue
puts $!,$@
end
}
end
ところが、これだと0x190186 is recycled objectと云われてし
まって、結局成功しません。
どうすればいいのでしょうか?
もう一度要点を整理すると、
・インスタンス内のHashを終了時にHDに保存したい
ということです。
どなたかご存じでしたらお教え下さい。
では……