celluloid/celluloid — pull request #141 by justincampbell (2012-12-29 06:35:38+00:00)
Title: Protect FSM transition methods

In most cases, the state machine should be included into the object transitioning, instead of being a separate class/object.

e.g. in the cigarette_smokers example:

```rb
class Smoker
include Celluloid

class Machine
include Celluloid::FSM

default_state :standing
end

def initialize
@machine = Machine.new
...
```

I'd prefer to do:

```rb
class Smoker
include Celluloid
include Celluloid::FSM

default_state :standing
...
```

If there is a need to transition a state machine from outside of the object, we should encourage users to define verbs on the state machine that represent events, and the state machine should decide to transition based on those events.

Just my opinion, curious to know your thoughts…