Ruby DRb에서 정말 이상한 동작이 발생했거나 문제가 dbm 일 수 있습니다. dbb 데이터베이스를 서버와 함께 사용하고 DRb를 통해 요청을하는 클라이언트를 사용하고 있습니다.Ruby 연결이 닫혔습니다 (DRb :: DRbConnError)
가 여기에 문제를 가진 방법이다 (데이터베이스 연결 괜찮습니다) 그리고 서버에 있습니다
def get id
obj = nil
db = DBM.open @name
obj = db[id.to_s]
db.close
return obj
end
클라이언트 측에서 오류 connection closed (DRb::DRbConnError)
를 반환 obj = db[id.to_s]
이 줄.
내가이 일을한다면 obj = db['1']
그것은 잘 작동합니다 ('1'은 dbm의 키입니다). 왜 이런 일이 생길까요? id
의 문제점은 무엇입니까? 다음은 클라이언트 측의 호출입니다.
DRb.start_service
r = DRbObject.new_with_uri(SERVER_URI)
puts r.get '1'
왜이 오류가 발생합니까? 같은 일이이 방법으로 발생 : 연결 오류가 발생 폐쇄와 같은
def delete id
db = DBM.open @name
db.delete id
db.close
end
. to_s]'이전에 "id"(클라이언트 측 문자열)와 똑같은 오류가 발생했습니다. 아무 것도 반환하지 않고 단지 오류가 발생하고 서버가 멈 춥니 다. – dabadaba
get_id 메소드에서 'obj = db [id.to_s]'와'db.close' 사이에'p obj'를 추가하면 무엇을 반환합니까? – rebelshrug
아무것도 없으면 서버가'obj = db [id.to_s]'줄에서 충돌합니다. 그것은 일어나지 않을 것이다 후에 – dabadaba