Post by Danny FullertonSteve, is it possible to see an implementation? If it's not
open-source, could you provide snippets?
I wish! I'd have to get permission from management folks who would
need a lot of convincing. It's not a battle I want to fight, which is
why I had to describe it only at a high-level. I don't think I'm
doing anything especially clever that would make a code snippet
useful. At least, I don't think so. My goal was to give an example,
"here's one way to decide about ruote/ruote-kit in a rails app".
Your point about the REST interface is another way to decide, although
I'm not convinced. What does decoupling rails from ruote buy you,
other than less gem dependencies? Doesn't your client code just end up
duplicating the gem functionality with REST calls?
There's different reasons.
Our Rails frontend doesn't have the same SLA then the backend workflow
engine. Tasks (e.g. email, automated actions like ssh commands) still
needs to get triggered if the frontend is dead.
I agree, there's some sort of overlap between what's in Ruote and what's
in Rails but here's how I came to see it: the backend (Ruote) has
Participant's implementation (i.e. concrete actions performed by a
participant) but Rails has the UI representation of those actions:
In our frontend, expression normally only show read-only information. In
the context of an SSH participant it would be server, port, commands,
etc. This is also true for any others expressions (e.g. if, wait, set,
sequence), not only participants.
I said normally because the only exception for this is our web-form
participant. In the backend (Ruote) this is implemented by a storage
participant but the frontend represents read-write information (it
modifies the workitem then proceed()) from an `almost standard` Rails
model. We are using something we called ActiveRuote which implements
ActiveAttr::Model (ActiveModel::Model in Rails >= 4) to behave like
ActiveRecord (e.g. mass-assignment, validation).
This is still experimental but you get the idea.
Post by Danny FullertonAlso, keep in mind that ruote-kit main objective is to provide a
RESTful interface to ruote. If you wish to decouple rails from
ruote, this is very useful.
Steve, is it possible to see an implementation? If it's not
open-source, could you provide snippets?