Where would this type of code go?

I’d like to create a command processor on the backend of a rails
and make it accessible in some way outside of the browser. So, for
example, it might listen for connections on a particular port, or might
watch a named pipe, or something else. This part is irrelevant.

The relevant part is that it needs access to models but needs to be
of the standard Rails flow (i.e., http request to controller). So, the
command processor might receive the command “start job 10”, and it
should be
able to update the database through the Rails app models, and possible
send results email through an ActionMailer. In other words, it would do
everything your normal ActionController would do, without be started
response to an HTTP request.

Where is the proper place to put this within a rails application, and
would I make it capable of accessing my models?

Thanks guys.


try :

ruby script/console

but generally, ActiveRecord don’t need be executed only via browser
(that is via controller), so you could write a ruby-script using
ActiveRecord (that is some of : Model<ActiveRecord)

what i do in this situation is create a rakefile under the lib/tasks
folder. For example I have one called import.rake that imports some
dummy data into the database. At the top of the file I have

ENV[“RAILS_ENV”] = “development”
require File.expand_path(File.dirname(FILE) +

and now my tasks can access all of the rails models. Then i define my
import task and run it using rake import. However, as long as your ruby
file has those two lines in it (the second one’s path depending on the
location of the file) then the ruby program can access all your models.