I'ts not a (db-)model, not controller - so is it a lib?


I’m starting a test spike for a small Rails project, that doesn’t have
any database backend. It’s a kind of a (Debian Linux) system
administration utility like webmin that collects and displays system
informations, modifies config files at different locations and runs
system tasks like the installation of Debian packages.

I’m not sure yet, if Rails is the right tool for, but that’s what I
want to figure out with a test spike. Even if I don’t need any of the
ActiveRecord stuff, ActionController, the rhtml-template’s,
Ajax-support and so on seem to be useful enought to give Rails a try.

At this point I managed to make the unit tests work without a database
and have coded some simple controllers. But as it now becomes a little
bit more complex, a few questions came up:

  1. I’m not using a database, so whenever I use some kind of model
    class, I simply don’t derive it from ActiveRecord. Such a model e.g. is
    DebianPackage, which holds package information that were retrieved from
    the Debian system. The question now is, does this class still belongs
    to app/model/ ? or should non-DB backed models always go to lib/ ?

  2. I have some classes that do stuff like retrieving cpu load info from
    the system. These classes are some kind of service objects, not models
    or controllers. Should they be put into lib/ ore somewhere else?

  3. If I put the service object classes in lib/, where should the tests
    for it go? Am I free to simply put them into test/ or test/services and
    create a rake task for it?