On Mar 29, 2005, at 11:29 PM, Ilias Lazaridis wrote: > I've reviewed a little the documentation, but find nothing about > metadata. Probably because it's too general a topic. The word "metadata" changes meaning by context. > Is there a standard way to apply metadata/annotations to my class > Talker, its Methods, its Attributes? > > E.g.: > > class Talker > > attr_accessor :name # Type = String; Label = Name; Size = 30; > attr_accessor :age # Type = int; Label = Age; Min=1; Max=150; > > def sayYourName > end > end Your comment has already hit on one solution. :) There may be many others, depending on how you intend to use this information... > - > > "attr_accessor" does not work on class variables (e.g. @@count). > > Must I create @@var/getter/setter manually? Not exactly. Here's a trick: irb(main):001:0> class MyClass irb(main):002:1> class << self irb(main):003:2> attr_accessor :test irb(main):004:2> end irb(main):005:1> end => nil irb(main):006:0> MyClass.test = 501 => 501 irb(main):007:0> MyClass.test => 501 There is a gotcha though: irb(main):008:0> class MyClass irb(main):009:1> def test_method irb(main):010:2> @@test irb(main):011:2> end irb(main):012:1> end => nil irb(main):013:0> MyClass.new.test_method NameError: uninitialized class variable @@test in MyClass from (irb):10:in `test_method' from (irb):14 from :0 You can see that this technique does not use @@test. All of this is just playing around though. If you seriously need to define class accessors a lot and can't be bothered to type: def self.test( ) @@test end def self.test=( value ) @@test = value end Most editors I've ever seen will allow you to macro that and assign it to a single keystroke. My opinion, feel free to completely ignore, is that you've strayed pretty far from "evaluating Ruby" when you worry about details like this. We can sit here and show you examples like the above indefinitely, exploring all corners of the language. There's no substitute for just learning the language and seeing what it can do for you though, and this is a poor way to go about that. James Edward Gray II