skwpspace yan pritzker’s home on the web

skwpspace is Yan Pritzker's home on the web

Blog :: Photography :: About Me

TwitterCounter for @skwp

Get the news feed
Get updates by email
Follow me on twitter

hello, i'm yan

This blog is about startups, blogging, Ruby On Rails, virtualization and cloud computing, photography, customer service, marketing, ux and design, git, and lots more.

Top Posts

planypus

I'm the founder of Planypus, the place to share your plans!

cohesiveft

Accessible, manageable, virtualized application stacks ready to download or deploy to the cloud!

flickr

Kali - burlesqueTV ManHerohomeless superheroStairsDeirdre DollDeirdre at the windowMichelle L'Amour

Archives

Contact

Reach me at yan at pritzker.ws

Posted
14 May 2008 @ 8am

Tagged
rails, social web

Rails tagging plugins overview and comparison

There are way too many tagging plugins for Rails. I’ve produced this post as an attempt to summarize the differences between them. Disclaimer: I didn’t actually try all the plugins but I did peruse their code when deciding which one I would use.

My criteria for choosing a plugin was:

  • Important: Supports user-owned tagging
  • Important: Supports tag cloud generation
  • Less important: Code as clean as possible for extending
  • Somewhat important: ability to contribute patches. I had been stuck with a heavily customized 2006 acts_as_taggable before and didn’t want the same thing with the new plugin.
  • Not important: Related tags, and other complex tag searches

Title Pros & Cons
acts_as_taggable gem

8/13/2006
  • may have (minor) issues with Rails 2.0
  • no longer maintained and way too old to be taken seriously
  • code is pretty messy, but tagging can be a messy business
  • distributed as a gem; I want a plugin
acts_as_taggable_on_steroids

3/30/2008
  • supports tag caching with a column on the tagged object
  • does not support user owned taggings
  • lives in svn
  • has lots of value add methods: find related tags, etc…builds on messy code from original plugin
  • plugin page has way too many comments indicating bugs or quirks
acts_as_taggable_on

5/3/2008
  • lives at github, easy to contribute, and recently entered active development
  • based on the steroids plugin above with similar messy code
  • does not support user owned tags
  • supports multiple tagging contexts per object, which is a special case that I didn’t require for my project
acts_as_taggable_redux

5/14/2008 (by me), previously 07/2007
  • recently moved to github, so it’s easy to contribute.
  • supports user owned tags out of the box.
  • does not provide many special methods like finding related tags, but has simpler code.
  • was not actively maintained by original maintainer, but I am going to be contributing more to it.
  • recently added support for scoping Tag searches by taggable type
spraypaint

12/12/2007
  • not as recently touched as some of the others and lives in svn.
  • does not support user owned tags.
  • has a complex data structure with a special table for tag counts and support for tag namespaces.
  • namespaces seem like overkill to me as they can be done with simple strings, but can make sense in very large tagspaces to narrow searches.
  • several interesting methods for related tags,etc, but some commented as not ready for primetime.

After reviewing the options, acts_as_taggable_redux seemed like the best candidate. I immediately had a couple contributions, which I first emailed to Wes, and later he moved the plugin to github and I am now a direct comitter.

I plan to continue to enhance this plugin, and possibly add some features to it from the other plugins, such as tag caching which becomes important for scalability. As it’s the most minimal of the plugins I feel it’s a good base to start with building clean code that doesn’t have a lot of legacy stuff from the 2006 plugin, which was the dark ages of Ruby coding with lots of ugly code produced :-)


8 Comments

Posted by
etlund
14 May 2008 @ 3pm

You may want to take a look at has_many_polymorphs tagging abilities. It’s not strictly a tagging plugin, but it includes generators for tagging models and controllers. http://blog.evanweaver.com/articles/2007/01/13/growing-up-your-acts_as_taggable/


Posted by
ashchan
17 May 2008 @ 12pm

Highly recommend has_many_polymorphs too.


Posted by
Yan
26 June 2008 @ 7pm

Update: acts as taggable on has resumed work and added user based tagging. It may be worth a look. http://github.com/mbleigh/acts-as-taggable-on/tree/master


Posted by
Ari
26 January 2009 @ 2am

Any updates? I’m looking into tagging now for my site… do you still like redux the best?

Thx


Posted by
Daniel Haran
26 February 2009 @ 12pm

That’s an impressive comparison!

I recently co-wrote a tagging plugin (giraffesoft/is_taggable, linked above) because we couldn’t find one that had “taggable type” and would be easy to maintain. In our experience, maintenance is paramount because there will always be a missing feature.


Posted by
ahabman
18 March 2009 @ 9pm

Is the “acts_as_taggable_redux” link above supposed to updated to http://github.com/geemus/acts_as_taggable_redux/tree/master ?


Posted by
hari
9 August 2009 @ 2am

Where is this redux plugin ?

http://github.com/geemus/acts_as_taggable_redux/tree/master does not work.

Thanks


Posted by
Pascal
14 August 2009 @ 8am

Why do you prefer a plugin over a gem?

Thanks for the comparison.


Leave a Comment

Ruby/html trick: wrap long strings with invisible wordwrap characters Infoworld names CohesiveFT in top 10 startups for 2008