It appears that my mail client is having trouble -- hence the blank
message bodies.  Sorry about that.

Flebber, if you have a simple application and aren't coding to learn
about OOP, it may be that you simply don't need classes.  In Ruby,
they are optional.

You should think of classes as a way of wrapping functionality and
data together.  You've not told us anything about your data, or how
complex foo() is, so I'm not sure we can give you more concrete
suggestions.   But if you start thinking about how the data needs to
be organised, and what operations the data needs to be able to perform
on itself, then either some classes will "pop out" -- or they won't,
and you'll know that this program does not need to be OOP.

With regard to your option selection block, I would personally put
that functionality into foo, and just pass foo a "mode" variable, so:

loop do
    mode, data = getinput()
    break if (mode == "quit")

    foo(mode, data)
end

I'm not sure why your pseudocode asks for input twice and then runs
foo() twice, but presumably there is a good reason.

Likewise, we don't know whether you plan to gather input using a GUI
(which would involve an event-driven approach) or at the command line,
for instance (which would allow much simpler code).