Attributes ala java annotations or .Net attributes?

Does ruby have attributes ala java annotations or .Net attributes?
I’ve never seen them in use, hence my wondering.
Right now I’ve got a pretty big test-suite written in ruby & watir,
and I’ve got alot of old code in it. It would be nice if I just was
able to put in something like an [obsolete]/ tag, and have
it just ignored, or have a warning popup automatically to say “Your’e
using an obsolete method, get with it!”, or to bip me on the head…

Is there anything like this?

Thanks,
Kyle

On Wed, Jul 25, 2007, Kyle S. wrote:

Does ruby have attributes ala java annotations or .Net attributes?
I’ve never seen them in use, hence my wondering.
Right now I’ve got a pretty big test-suite written in ruby & watir,
and I’ve got alot of old code in it. It would be nice if I just was
able to put in something like an [obsolete]/ tag, and have
it just ignored, or have a warning popup automatically to say “Your’e
using an obsolete method, get with it!”, or to bip me on the head…

It’s not exactly what you’re looking for, but there’s a library called
‘deprecated’ that can be used to achieve that sort of result:

http://rubyforge.org/projects/deprecated/

Ben

On Jul 24, 3:21 pm, “Kyle S.” [email protected] wrote:

Does ruby have attributes ala java annotations or .Net attributes?
I’ve never seen them in use, hence my wondering.
Right now I’ve got a pretty big test-suite written in ruby & watir,
and I’ve got alot of old code in it. It would be nice if I just was
able to put in something like an [obsolete]/ tag, and have
it just ignored, or have a warning popup automatically to say “Your’e
using an obsolete method, get with it!”, or to bip me on the head…

Is there anything like this?

Facets has an annotations system, but of course it’s not an built-in
part of ruby. So it simply supplies a general way to tag you code.
It’s up to you to actually make it do something. Basic example:

require ‘facets/annotations’

class Y

ann :x, :obsolete => true

def x
  ...
end

end

Y.ann(:x, :obsolete) #=> true

So to use that to ignore methods, I suppose you’d want to use
ObjectSpect.each_object(Class) to loop through the classes and
undefine obsolete methods. For warnings, you could wrap them instead.

T.

Hum. OK, thanks you two. Maybe if I’m lucky it’ll end up in ruby 2.0
:wink: