You can make a rails app that never runs in a server, and then use pieces to do what you want. You can use script/runner to run methods in a model, or use code like this to run a controller:
#!/usr/bin/env ruby
require 'rubygems' require_gem 'activerecord' require_gem 'actionpack'
SCRIPT_PATH = File.expand_path(File.dirname(__FILE__))
$LOAD_PATH << "#{SCRIPT_PATH}/../app/models/" $LOAD_PATH << "#{SCRIPT_PATH}/../app/controllers/" $LOAD_PATH << "#{SCRIPT_PATH}/../lib/"
require 'application'
require "#{SCRIPT_PATH}/../config/environment.rb" require 'model' require 'controller'
Model.action SomeController.action
etc.
Make sure to set the rails_env environment variable: RAILS_ENV=production
I use script/runner where possible, but I have to use the above code sometimes, such as when a cron job effects caching.
Michael