Hi,

You might want to check out the Doodle rubygem at http://doodle.rubyforge.org/ .

Here's an example of its use:

daniel@daniel-desktop:~$ cat /tmp/doodle.rb
require 'rubygems'
require 'doodle'

class List < Doodle::Base
        has :items, :collect => :item
end

class GroceryList < List
        # nothing added here.
end

my_list = GroceryList do
        item "Chunky bacon"
        item "Lettuce"
        item "Tomato"
end

p my_list.items

daniel@daniel-desktop:~$ ruby /tmp/doodle.rb
["Chunky bacon", "Lettuce", "Tomato"]
daniel@daniel-desktop:~$

Dan

On Sun, Apr 20, 2008 at 7:09 PM, Chad Murphy
<floppyformattingfrenzy / gmail.com> wrote:
> Robert Klemme wrote:
>  > On 20.04.2008 23:37, Chad Murphy wrote:
>
> >>   item :lettuce
>  >>   item :potato
>  >>   item :ham
>  >> end
>  >>
>  >> print Groceries.new
>  >>
>  >> The trouble I'm having is figuring out how to go about adding an
>  >> instance variable, which is an array, and will be updated using these
>  >> attr like methods (I don't know what these are called which is giving me
>  >> some trouble).
>  >
>  > You are looking for class methods.
>
>  Thanks.
>
>
>  >> Is this possible to pull off?
>  >
>  > Yes, but I doubt it is what you want: you are asking for class methods
>  > to add items but you create an instance (Groceries.new).  Where is the
>  > point in defining a list of items on class level and instantiate it
>  > multiple times?
>  >
>  > If you describe what you want to achieve, i.e. what (business) problem
>  > you are trying to solve we can come up with other suggestions that may
>  > be more appropriate.
>  >
>  > For example: this looks like a case for inheritance:
>  >
>  > class Grocery
>  > end
>  >
>  > class Lettuce < Grocery
>  > end
>  >
>  > class Potato < Grocery
>  > end
>  > ...
>  >
>  > With a little bit of meta programming you can then get all the
>  > subclasses of Grocery.
>
>  I saw some code like this and tried playing around it. I think the
>  problem was that I had no idea whether it was something you could do in
>  order to abstract things from the sub class or something completely
>  different, but I realized you could do that with a method.
>
>  > Kind regards
>  >
>  >   robert
>
>  Thanks again.
>
>
> --
>  Posted via http://www.ruby-forum.com/.
>
>