skwpspace yan pritzker’s home on the web

skwpspace is Yan Pritzker's home on the web

Blog :: Photography :: About Me

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.

Get updates by email
Follow me on twitter

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

at the paradeat the parade@slava626@leorazellman and @smazo at bat17my poor ricohyou're wearing my sweaterthe graduatethe answer, my friend

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 :-)


3 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


Leave a Comment

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