On Tue, Mar 4, 2008 at 3:00 PM, Thomas Mueller <thomasmueller76 / googlemail.com> wrote: > Hi, > > I am using JRuby to access data in some business application (Siebel, > if anybody is interested). > In Siebel I need to activate fields if I want to access them later: > > bc.activate_field(name) > bc.query(search_specs) > do stuff > > I've written methods that do the query and then yield each record to a > given block, so I can write something like: > > bc.activate_field("field1") > bc.activate_field("field2") > bc.find_all(search_specs) do |record| > record["field1"] = "some value" > puts record["field2"] > end > > I would like to do the activate_field() calls automatically, based on > which fields are being accessed inside the block. > Is it possible to look into the block and find out which fields are > being accessed? In the above example that would include the fields > "field1" and "field2". > Basically, can I access the code inside the block and inspect it? I don't know of any way to do that. But I don't think you need to: you can yield a proxy object to the block that intercepts the references (the []= methods on the record object, or anything else that requires activation) and activates fields as necessary, before passing the call on to the object that does the real work, I think.