[ruby-list:50681] DRb friend
From:
emo@...
Date:
2018-07-09 07:08:28 UTC
List:
ruby-list #50681
Ruby 1.8 で書かれた DRb を使うプログラムを
Ruby 2.4 で動かしたところ、下記のような例外
が発生したのですが、どのように対処すればよいのでしょうか?
def dump()
@q = DRbObject.new_with_uri(CalcQueue::URI) #サーバーに接続
calcCommand = @q.getCalcCommand() # <-- ここで以下のような例外が発生
/usr/local/rbenv/versions/2.4.3/lib/ruby/2.4.0/drb/drb.rb:579:in `load':
connection closed (DRb::DRbConnError)
from /usr/local/rbenv/versions/2.4.3/lib/ruby/2.4.0/drb/drb.rb:641:in
`recv_reply'
from /usr/local/rbenv/versions/2.4.3/lib/ruby/2.4.0/drb/drb.rb:941:in
`recv_reply'
from /usr/local/rbenv/versions/2.4.3/lib/ruby/2.4.0/drb/drb.rb:1254:in
`send_message'
from /usr/local/rbenv/versions/2.4.3/lib/ruby/2.4.0/drb/drb.rb:1142:in
`block (2 levels) in method_missing'
from /usr/local/rbenv/versions/2.4.3/lib/ruby/2.4.0/drb/drb.rb:1229:in
`open'
from /usr/local/rbenv/versions/2.4.3/lib/ruby/2.4.0/drb/drb.rb:1141:in
`block in method_missing'
from /usr/local/rbenv/versions/2.4.3/lib/ruby/2.4.0/drb/drb.rb:1160:in
`with_friend'
from /usr/local/rbenv/versions/2.4.3/lib/ruby/2.4.0/drb/drb.rb:1140:in
`method_missing'
from ./calc_queue_client.rb:47:in `dump'
from ./calc_queue_client.rb:136:in `<main>'
ここで、クライアントが呼び出している、リモートオブジェクトのメソッド
getCalcCommand()
は別のリモートオブジェクトのインスタンスを返す
メソッドです。
とりあえず、サーバ側で以下のように safe_level を 1 から 0
に変更することで動くようになりましたが、例外の所で with_friend
というメソッドを呼び出そうとしているところがわかりません。
friend とはどのように定義すればよいのでしょうか?
safe_level を下げないようにする方法はあるのでしょうか?
#DRb.start_service(CalcQueue::URI, $q, :safe_level => 1)
DRb.start_service(CalcQueue::URI, $q, :safe_level => 0)
江本
Attachments (1)
smime.p7s
(3.91 KB, application/pkcs7-signature)