From: Thibault Martin-Lagardette <thibault.ml@gmail.com>
Hi!
I believe the problem is that you were overriding the wrong init method. Here is what I changed to your code to make it work:
class MyNode < ODNode def initWithSession(session, name:name, error:err) if super @session = session self end end end
session = ODSession.defaultSession node = MyNode.nodeWithSession session, name: "/Local/Default", error: nil
I override initWithSession:name:error instead of init, and created a "MyNode" object the exact same way I would have created an ODNode :-) The results were, I believe, what you would expect:
Thanks, but unfortunately that doesn't actually help - there's no difference in use between that and not wrapping the object init... For example, what I'm doing currently is this - module OpenDirectory class Node attr_reader :node def initialize config = { :node_name => "/Local/Default" } if config[:node_name].eql? "/Local/Default" @session = ODSession.defaultSession else @session = ODSession.sessionWithOptions config[:session_options], error:nil end @node = ODNode.nodeWithSession @session, name:config[:node_name], error:nil end end end so I can either local_node = OpenDirectory::Node.new or remote_node = OpenDirectory::Node.new proxy_config where proxy_config is a hash containing info for a DS remote connection to our directory master. I then access the ODNode as either local_node.node or remote_node.node where required. What I want to be able to do is just use local_node or remote_node as if they were ODNode objects (or subclasses of ODNode) to remove the ruby proxying wrapper around the core Obj-C objects, but still hide the ugliness of OpenDirectory behind some simpler Model style wrappers. (I hope that makes sense) cheers Russell