Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Example Rails app using Ruote and RuoteKit
JavaScript Ruby
branch: rails3

Update to Rails 3.0.10.

latest commit 07bf3e7341
Torsten Schönebaum authored
Failed to load latest commit information.
app Ruote::Parser is Ruote::Reader in v2.2.0
autotest Include TheBoard example by John Mettraux.
config update to rails 3.0.4
db process definitions as a resource
doc initial commit
lib mini user model / authorization sytem
log remove log/test.log
public blue color scheme; definition edit textbox/editor toggle;
script update to rails 3.0.0.beta4
spec Workitem#to_param shouldn't return any '.'
test update to Rails 3 beta
.gitignore ignore .ds files
.rspec users and groups
CHANGELOG.txt Include TheBoard example by John Mettraux.
Gemfile Update to Rails 3.0.10.
LICENSE.txt Include TheBoard example by John Mettraux.
NOTES.txt Include TheBoard example by John Mettraux.
README.markdown include worker in ruote engine by default and update readme
Rakefile Include TheBoard example by John Mettraux.
TODO.txt todo update to Rails 3 beta


Ruote on Rails

Is an example Rails 3 app for demonstrating the usage of ruote in Rails via ruote-kit and quaderno.


  • clone (or do whatever you like to get the code) this repo: $ git clone git://
    $ cd ruote-on-rails
  • install bundler if not present $ gem install bundler
  • make sure all dependencies are met $ bundle install
  • create database $ rake db:migrate
  • create temp dir $ mkdir -p mkdir tmp/pids

Generate a new Rails app using ruote[-kit]

See ruote-kit's Readme on that

Note: You'll get a plain ruote[-kit] integration, no examples will be installed to your app. You won't get quaderno this way, either.


Just tailor config/initializers/ruote_kit.rb to your needs.


$ rails server

Browse to http://localhost:3000/_ruote and you'll see there are no running processes. You could change that using the "Launch process" link ;-)

Using Ruote from within Rails

You can access Ruote's engine anywhere in your Rails code by calling RuoteKit.engine So launching a workflow process is as easy as RuoteKit.engine.launch your_process_definition The storage participant (used by the catchall participant) is available at RuoteKit.storage_participant

Ruote Workers

When using ruote, you'll often here the words 'engine', 'storage' and 'worker'. Those are different parts of ruote. Basically, the engine is just a dashboard to the storage, you use it to launch processes or get the state of running processes. The engine itself doesn't do any work (triggering participants for example), it just puts messages into the storage. The work is done by one (or more) workers (oh yes, that was obvious). They look into the storage to find out what to do next.

You may instanciate a ruote engine with or without a worker. In the latter case, you may launch processes, but they will never appear in the processes list until you start a worker: The launch request will be put in the storage and lie there unprocessed.

By default, RuoteOnRails does include a worker in the engine when running the Rails server process. That way, you'll get started quickly. Please beware that you'll have to be careful when deploying to production. Ruote's worker thread should be always on, or schedules like timeouts won't be triggered in time (they won't be forgotten, the next time the worker starts they'll be triggered, but that may be too late). Especially Passenger stops Rails server processes after some time by default and would thus stop the ruote worker, too (in Passenger 3, you may configure that there should be at least one process running all the time, though).

RuoteOnRails ships with a rake task that starts a worker and keeps running until you stop the task. You may launch it by calling

$ rake ruote:run_worker

Stop the task by pressing Ctrl+C.

If you don't like to have a worker thread running inside your Rails server process, have a look at config/initializers/ruote-kit.rb. You'll find instructions there how to instanciate the ruote engine together without a worker.

TheBoard example

The auth is minimal (I'd say: pathetic), but see yourself. Please make sure to replace it with your own if you base your work on this…

TODO: Write more about TheBoard

Other Examples





John Mettraux Torsten Schönebaum

Something went wrong with that request. Please try again.