ruby - A method of telling if object supports a method -


i trying write file handling code opens file, obtains data file, closes file.

my first encountered problem if use the

file.open(...) |fd|    var = fd.size end 

method of opening file ensures closed @ end, variables inside limited scope of block.

one way solve predefine variables outside of block, doesn't seem right...

my other solution use ensure block close handles so:

def test(file)    return if file == nil || file == ""    fd = file.open(file, ...)    var = fd.size ensure    fd.close end 

but doing if file handle not exist or not created, perhaps logic before handling errors, ensure block throws nil:nilclass exception.

is there clean way handle files allows me pull different stats (including reading of contents) in way can guarantee file closes, , don't have predefine variables escape scope of block? (bonus points if works socket handles well)

thanks!

you can put conditional on method call fail if fd nil.

ensure   fd.close if fd end 

you can use :respond_to? if want check if method supported

ensure   fd.close if fd.respond_to? :close end 

if want fancy, rails has helper method (that can borrow) trying send method object. http://apidock.com/rails/object/try

you able change code to

ensure   fd.try(:close) end 

Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -