On Aug 23, 2006, at 10:23, Farrel Lifson wrote: > On 23/08/06, Ioana Nap <ni / arobs.ro> wrote: >> Hi, >> Can you help me please and tell how can i check if a field is read >> only >> in ruby? >> i'm trying to write a automated script > > You could check to see if the object responds to "field=". That's the standard way this works, and is probably sufficient for most cases. It's important to remember that (in general) it's not variables/fields in Ruby which have properties like 'read-only' - that behaviour is defined by methods of the enclosing class, and methods to read and write variables aren't limited to being named after those variables. The follow Java-esque method would be perfectly acceptable code: class FooBar # ... def setMoose(squirrel) @moose = squirrel end end I'm not aware of any general way to know if a particular method call will affect a particular variable or not, and I wouldn't be surprised if the problem turned out to be theoretically equivalent to the halting problem. At first glance, an equivalence seems trivial; how to determine if the variable @a is changed by the following method: def foo @a = "true" if undecidable_method end If you're only worried about the possibility of writing to a variable, though, then parsetree[1] will give you a lot more coverage than checking for responding to 'name=', though I expect there are some pathological cases which might be difficult to catch. matthew smillie [1]: http://rubyforge.org/projects/parsetree/