Avoiding / handling a method_missing call

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?

Aldric Giacomoni 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

···

--
Posted via http://www.ruby-forum.com/\.

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?

···

On Tue, 18 Nov 2008 17:47:26 -0500, "J. Cooper" <nefigah@gmail.com> wrote:

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