about me

I'm a 35'ish year old web application developer from South Portland, Maine. I love meeting fellow techies, drop me a line if you want to talk shop.

Categories

7 Best of Breed Rails Plugins I Can’t Live Without

Posted on 04/01/2009 at 09:14 PM

I am often asked about the various gems/plugins I use in my Rails apps and thought it might make for a good blog post. Most of these I have a good history with, while some I settled on only recently. Either way, this list contains what I consider to be the best of the best, for what each of them helps to accomplish. I hope you will check them out if you have not yet had a chance to.

REVISIONING

acts_as_revisable (rich)
A framework for building heavily versioned applications.
http://github.com/rich/acts_as_revisable/

acts_as_revisable is a joy to use. It doesn’t have you create separate tables for versions like some other popular versioning plugins. The interface is very well thought out, and I’ve yet to find something it doesn’t do that I’ve needed. Its heavily documented and just works!

TAGGING

acts-as-taggable-on (mbleigh)
A tagging plugin for Rails applications that allows for custom tagging along dynamic contexts.
http://github.com/mbleigh/acts-as-taggable-on/

A tried various tagging solutions over the last year and finally settled on this one by mbleigh. acts-as-taggable-on-steroids and a few others never seemed to work on models build with single table inheritance (STI) or that had polymorphic relationships.

AUTHENTICATION

authlogic (binarylogic)
A clean, simple, and unobtrusive ruby authentication solution.
http://github.com/binarylogic/authlogic/

Like most of the Rails community, I earned my stripes using Restful Authentication, a sexy authentication generator that got you up and running in no time at all, but it wasn’t long after that I began to find things I didn’t like about it. Overall, Restful Authentication felt very non-object oriented. It polluted my user model with code I hadn’t written and it didn’t even feel restful. Authlogic on the other hand makes no assumptions on how you’d like to authenticate users. It lets you treat your UserSession as a model and take advantage of ActiveRecord’s build in callbacks. Its also a Gem and easy to update. Nowadays you won’t find me using anything else. Its also heavily documented.

BACKGROUND JOBS

delayed_job (tobi)
Database backed asynchronous priority queue—Extracted from Shopify.
http://github.com/tobi/delayed_job/

I don’t have a lot of experience with background process plugins, I’ll admit that up front. Hands down though, this one has some slick features and is very actively developed. No complaints.

GIT WORKFLOW

git_remote_branch (webmat)
A tool to simplify working with remote branches.
http://github.com/webmat/git_remote_branch/

If you are a frequent brancher, and need to sync local branches with your remote server there is no better way than using git_remote_branch. You can publish and track local branches in a single command. I find myself doing this a lot when I have created a branch on my laptop but want to continue where I left off on my other machine at home. It also has a helpful ‘explain’ feature to tell you exactly which commands will run should you use one of its features.

GEM BUILDING

jeweler (technicalpickles)
Simple and opinionated helper for creating and managing Rubygem projects on GitHub.
http://github.com/technicalpickles/jeweler/

I knew nothing about writing gems, and pushing them to github ... 20 minutes later I had. Nuff said.

STATE MACHINES

state_machine (pluginaweek)
Adds support for creating state machines for attributes on any Ruby class.
http://github.com/pluginaweek/state_machine/

This one I found by a friend’s recommendation. I had been using Rubyist’s Acts As State Machine (now known as AASM) and had many issues with it early on. Specifically I had been trying to cancel a transition in a callback and eventually found out it wasn’t supported. My understanding is that this plugin was originally built for Rails and later refactored to to be less dependent on it. state_machine however was built from day one to work with any Ruby class, and later integrations were added for ActiveRecord, Datamapper and Sequel. Its the best thing out there and I can’t recommend it enough. The code is a joy to look though and its heavily documented.

5 Comments

Comment #1 by Rich Cavanaugh  on  04/03  at  10:39 AM

Russell, I’m the author of acts_as_revisable, I’m glad you like it. Just thought I’d give you a heads up that I finally released 1.0:

http://withoutscope.com/2009/4/3/flexible-activerecord-versioning-with-actsasrevisable

Comment #2 by CodeOfficer  on  04/05  at  10:34 PM

Rich, we’ve met! You added in a feature to cancel revisions in a before_ callback for me smile I’m excited about the updates ... thanks so much! I’ve been gettign intimate with your codebase to improve my ruby-fu. Great work!

Comment #3 by Falk Pauser  on  10/21  at  03:32 AM

Hehe - I also use the plugins you mentioned plus:
* searchlogic & settingslogic
* whenever (cron-job management)

Nice blog!

Comment #4 by CodeOfficer  on  10/21  at  03:34 AM

Thanks Falk, I also would add ‘whenever’ to my list as well. I keep meaning to try out searchlogic and settingslogic. I may do that soon.

Comment #5 by Sathya Sekaran  on  03/02  at  05:07 AM

Searchlogic is brilliant!

So is formtastic. DRYs up your forms like crazy. Plus it’s fully configurable.

Leave a comment?

Please use Pastie or Gist if you need to write code in your comments.

Name:

Email:

Location:

URL:

Remember my personal information

Notify me of follow-up comments?

Please enter the word you see in the image below:


RailsConf 2008 Often times I will release code for free or go that extra distance to help others online. If my skills were useful to you, please consider a small donation. Thank you very much.

recommend me!

Search

You Can Find Me

@ github.com
@ twitter.com
@ calendaraboutnothing

My Wishlists

@ Amazon.com

My Other Sites

Foundation's Edge, RJones Family, We're Not.com (only for staging), Ailee Jones (same as rjones for now)

Friends of Mine

Aaron, Barnaby, Brian, Chris, Dirk, Frank, Four, Justin, Matt, Mike, Monty, Paul, Sean, Travis

IRC Hangouts

I can usually be found lounging on irc.freenode.net while I work, on the following channels: #fauna, #github, #hello-heroku, #jquery, #passenger, #ruby, #rubyonrails, #slicehost, #sproutcore, #textmate, #werenot.