Avoiding / handling a method_missing call


#1

I’m trying to retrieve some data from Active Directory
(operatingsystem and operatingsystemservicepack). It so occurs that
-sometimes- that data is nonexistent (Linux box, maybe)… I don’t
know how to catch that error (it gives me a method_missing when it
fails) and make it fail gracefully, returning an empty string instead.
What I’ve done so far is just copy the method_missing from the ldap.rb
to my source code and added an if statement to return ‘’ if the
argument is one of the two mentioned above… Is there a more elegant
way?

Thanks!
What is the nature of conflict?


#2

On Tue, 18 Nov 2008 17:47:26 -0500, “J. Cooper” removed_email_address@domain.invalid
wrote:

object_you_originally_pasted_from.send(meth, args)
end
end

Okay, so …

class LDAP
def method_missing(meth, *args)
case meth
when ‘operatingsystem’: return ‘’
# etc etc
LDAP.send(meth,args)
end
end

is that it?


#3

Aldric G. wrote:

I’m trying to retrieve some data from Active Directory
(operatingsystem and operatingsystemservicepack). It so occurs that
-sometimes- that data is nonexistent (Linux box, maybe)… I don’t
know how to catch that error (it gives me a method_missing when it
fails) and make it fail gracefully, returning an empty string instead.
What I’ve done so far is just copy the method_missing from the ldap.rb
to my source code and added an if statement to return ‘’ if the
argument is one of the two mentioned above… Is there a more elegant
way?

Well, if nothing else, instead of copy-pasting the method_missing from
another class, try delegating to that class:

class MyClass
def method_missing(meth, *args)
case meth
when ‘operatingsystem’: return ‘’
# any other special handling
end

object_you_originally_pasted_from.send(meth, args)

end
end