No commit activity in last 3 years
No release in over 3 years
A ruby gem for acts_as_taggable to mongo
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Runtime

>= 0.7.0
 Project Readme

ActsAsMongoTaggable

Inspired by mbleigh's "acts_as_taggable_on," this tagging plugin works with MongoDB+MongoMapper.

Intends to be super-performant by taking advantage of the benefits of document-driven db denormalization.

Requirements

  • MongoDB
  • MongoMapper gem
  • Expects you to have a User model that includes MongoMapper::Document

Installation

Best practice -- install the gem:

gem install acts_as_mongo_taggable

… and add a line to your environment.rb:

config.gem 'acts_as_mongo_taggable'

or, if you're old-school, install as a plugin:

./script/plugin install git://github.com/mepatterson/acts_as_mongo_taggable.git

Finally, add this line to the Rails model class that you want to make taggable:

include ActsAsMongoTaggable

Yeah, that's it.

Usage

class User
  include MongoMapper::Document
end

class Widget
  include MongoMapper::Document
  include ActsAsMongoTaggable
end

To rate it:

widget.tag(word_or_words, user)
  • word_or_words can be a string, a string of comma-delimited words, or an array
  • user is the User who is tagging this widget

Basic search:

Widget.find_with_tag('vampires')

... will return the first Widget object that has been tagged with that phrase

Widget.find_all_with_tag('vampires')

... will return an array of Widget objects, all of which have been tagged with that phrase

Widget.most_tagged_with('vampires')

... will return the Widget object that has been tagged the most times with that phrase

Making tag clouds:

Widget.all_tags_with_counts

... will return a nice array of arrays, a la [["rails", 8],["ruby", 12], ["php", 6], ["java", 2]] Use this to make yourself a tag cloud for now. (maybe I'll implement a tag cloud view helper someday.)

Statistics on Tags:

Tag.top_25

... returns the top 25 most used tags across all taggable object classes in the system

Tag.top_25("Widget")

... returns the top 25 most used tags for Widget objects

Future

  • Performance improvements as I come across the need

Thanks To...

  • Jon Bell for some sweet refactorings and gem-ification
  • John Nunemaker and the rest of the folks on the MongoMapper Google Group
  • Kyle Banker and his excellent blog posts on grouping and aggregation
  • The MongoDB peoples and the MongoDB Google Group
  • mbleigh for the acts_as_taggable_on plugin for ActiveRecord

Copyright (c) 2009 [M. E. Patterson], released under the MIT license