首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby连接已关闭(DRb::DRbConnError)

Ruby连接已关闭(DRb::DRbConnError)
EN

Stack Overflow用户
提问于 2014-12-04 20:12:22
回答 2查看 766关注 0票数 1

我在使用Ruby DRb时遇到了非常奇怪的行为,或者问题出在dbm上。我正在使用带有服务器的dbm数据库和一个通过DRb发出请求的客户端。

下面是出现问题的方法(数据库连接正常),它在服务器中:

代码语言:javascript
复制
def get id
    obj = nil
    db = DBM.open @name
    obj = db[id.to_s]
    db.close
    return obj
end

这一行obj = db[id.to_s]在客户端返回错误connection closed (DRb::DRbConnError)

问题是,如果我这样做,它就会工作得很好('1‘是obj = db['1']中的一个键)。这一切为什么要发生?id有什么问题?下面是客户端的调用:

代码语言:javascript
复制
DRb.start_service
r = DRbObject.new_with_uri(SERVER_URI)
puts r.get '1'

为什么我会得到这个错误?同样的事情也发生在这个方法上:

代码语言:javascript
复制
def delete id
    db = DBM.open @name
    db.delete id
    db.close
end
EN

回答 2

Stack Overflow用户

发布于 2014-12-04 23:14:44

/lib/drb/drb.rb中,当使用sz.nil?str.nil时,看起来会引发连接关闭错误。

代码语言:javascript
复制
raise(DRbConnError, 'connection closed') if sz.nil?

raise(DRbConnError, 'connection closed') if str.nil?

obj = db[id.to_s]返回什么?

票数 0
EN

Stack Overflow用户

发布于 2016-02-21 08:20:58

尝试修补您的ruby,以便为您提供更多有关关系服务器端错误的详细信息。

请参阅:https://github.com/ruby/ruby/pull/1260

在我的例子中,这是一个声明safe_level的问题,然后我调用的一些代码最终违反了安全性(即进行了一个“危险的调用”)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27293817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档