As excited as I am to receive my pre-ordered copy of Duke Nukem Forever and quench my 14-year thirst, I’m even more excited to announce the official release of state_machine 0.10.0. After staying underground for more than 7 months, it’s time to come out like Punxsutawney Phil and give some good news! Check out all of the goodies you’ll discover in this release!

It’s time to kick ass and chew bubble gum… and I’m all outta gum.

As was the case with the last major release (0.9.0), the theme of this one continues to be the stabilization of public APIs and integrated ORMs in support of a 1.0 release. With that in mind, this release comes packed with a few major features and upgrades including:

Mongoid 2.0.0+ (rc7 or higher) support

Upgraded support for MongoMapper 0.9.0+ (including i18n and observer hooks)

As always, this release could not have been accomplished without support or inspiration from its community. In particular, these folks deserve a drink on me:

VChad Boyd

Morgan Christiansson

Karim Helal

Jon Klein

Benjamin ter Kuile

Dmitriy Landberg

Alexey Palazhchenko

Kaleem Ullah

If I missed anyone, please let me know!

We meet again, Doctor Jones!

It was almost a year ago when I asked for your help in making state_machine 1.0 a reality. Although I expected the library to be in feature lockdown, I decided that this interim 0.10.0 release was necessary for it to reach a stable state. Without your help, state_machine would never have become what it is today.

Like last time, I humbly ask for your help to get to 1.0. Report bugs, spread the word, and help me reach this goal by May 2011.

As always, don’t forget to follow the project! The bigger we can make this community, the more successful the project be!

Comments

Great to see a lib that I’ve started to use in Rails 2 is still heavily under development :).

Joe Van Dyk on March 21st, 2011 11:26 am

Say I have an Order class that has an execute_payment event. This transition makes a call out to the payment gateway and authorizes a credit card payment.

I’ve haven’t been able to come up with a good way to capture error messages with state_machine in this type of a situation. I’ve always had to define a method called execute_payment that called super() to handle this.

@Joe – Not quite sure I follow the use case. You could potentially define a before_transition that called out to the payment gateway. At that point, you can decide whether to add any errors to the record. You can also return false, which halts the transition.