 |
Forums |
Admin Start New Thread
By: Dao Ngoc
RE: shooting_starからRailsプログラムへの入退室イベント [ reply ] 2007-07-28 09:07
|
ゴックです。
ご回答ありがとうございます。
1.
ShootingStar#transmit では
p obs
puts obs.respond_to?(event)
を追加してみたら結果が
#<DRb::DRbUnknown:0xb7b656b8 ...>
false
となっていますのでDRbについて調べました。
この資料 http://rubygarden.org/ruby/page/show/DRbTutorial を参考して次の編集をしてみました:
class MyObserver
include DRbUndumped # <-- HERE
...
end
class Meteor < ActiveRecord::Base
...
def initialize(config)
config['shooting_star'] ||= {'shooter' => 'druby://localhost:7123'}
uris = config['shooting_star']['shooter']
DRb.start_service # <-- HERE
@shooters = [uris].flatten.map{|uri| DRbObject.new_with_uri(uri)}
end
...
end
これで production モードで実行すればうまく行きました。
2.
もう一つの問題があります。
もしshooting_starプロセスでは
Channel[<path>]
が事前に存在しないと
Meteor.shooter.observer(<path>, my_observer)
は失敗してしまいます。具体的には
ShootingStar#Shooter#observe で
NoMethodError: undefined method `observe' for nil:NilClass
というエラーが出ます。
どうしたらよろしいでしょうか?
よろしくお願いします。
|
By: Genki Takiuchi
RE: shooting_starからRailsプログラムへの入退室イベント [ reply ] 2007-07-27 01:12
|
瀧内です
> その実装はできたのでしょうか?
とりあえず簡易版を実装していますが、動作検証が
まだされていない状態ですね。
> ソースコードを見て、自分のRailsプログラムでMeteor.shooter.obs
> erver(<path>, my_observer)を使ってみたがイベントの取得はできな
> かった。
具体的な実行環境が良くわからないので想像なのですが、
Observerオブジェクトは、イベントを受け取るために
ずっと生き続けていなければいけないので、バックグラウンド
プロセスなどから登録してみたらうまく行くかもしれません。
あるいは、大変申し訳ないですがバグでちゃんと
動いてないという可能性もあります。
この機能は現行バージョンではまだまだ未完成な機能なので、
次期バージョン(3.2)ではサンプルアプリに組み込むなど、
もうちょっと充実させる予定です。
よろしくお願いします。
|
|
 |