• This repository has been archived on 02/Jan/2018
  • Stars
    star
    152
  • Rank 244,685 (Top 5 %)
  • Language
    Ruby
  • License
    MIT License
  • Created over 16 years ago
  • Updated over 11 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

(OBSOLETE) This plugin is based on acts_as_taggable by DHH but includes extras
This plugin is NOT supported and hasn't in many years. I'm leaving the code behind for historical reasons.

############################################

= acts_as_taggable_on_steroids

NOT THE OFFICIAL REPO, I just imported this project to get few bug fixed when I was using it for a project in early 2008.

USE AT YOUR OWN RISK


If you find this plugin useful, please consider a donation to show your support!

  http://www.paypal.com/cgi-bin/webscr?cmd=_send-money
  
  Email address: [email protected]
  
== Instructions

This plugin is based on acts_as_taggable by DHH but includes extras
such as tests, smarter tag assignment, and tag cloud calculations.

== Installation

  ruby script/plugin install http://svn.viney.net.nz/things/rails/plugins/acts_as_taggable_on_steroids

== Usage

=== Prepare database

Generate and apply the migration:

  ruby script/generate acts_as_taggable_migration
  rake db:migrate

=== Basic tagging

Let's suppose users have many posts and we want those posts to have tags.
The first step is to add +acts_as_taggable+ to the Post class:

  class Post < ActiveRecord::Base
    acts_as_taggable
    
    belongs_to :user
  end
  
We can now use the tagging methods provided by acts_as_taggable, <tt>#tag_list</tt> and <tt>#tag_list=</tt>. Both these
methods work like regular attribute accessors.

  p = Post.find(:first)
  p.tag_list # []
  p.tag_list = "Funny, Silly"
  p.save
  p.tag_list # ["Funny", "Silly"]
  
You can also add or remove arrays of tags.

  p.tag_list.add("Great", "Awful")
  p.tag_list.remove("Funny")

=== Finding tagged objects

To retrieve objects tagged with a certain tag, use find_tagged_with.

  Post.find_tagged_with('Funny, Silly')
  
By default, find_tagged_with will find objects that have any of the given tags. To
find only objects that are tagged with all the given tags, use match_all.

  Post.find_tagged_with('Funny, Silly', :match_all => true)
  
See <tt>ActiveRecord::Acts::Taggable::InstanceMethods</tt> for more methods and options.

=== Tag cloud calculations

To construct tag clouds, the frequency of each tag needs to be calculated.
Because we specified +acts_as_taggable+ on the <tt>Post</tt> class, we can
get a calculation of all the tag counts by using <tt>Post.tag_counts</tt>. But what if we wanted a tag count for
an single user's posts? To achieve this we call tag_counts on the association:

  User.find(:first).posts.tag_counts
  
A helper is included to assist with generating tag clouds. Include it in your helper file:

  module ApplicationHelper
    include TagsHelper
  end

Here is an example that generates a tag cloud.

Controller:

  class PostController < ApplicationController
    def tag_cloud
      @tags = Post.tag_counts
    end
  end
  
View:
  <% tag_cloud @tags, %w(css1 css2 css3 css4) do |tag, css_class| %>
    <%= link_to tag.name, { :action => :tag, :id => tag.name }, :class => css_class %>
  <% end %>
  
CSS:

  .css1 { font-size: 1.0em; }
  .css2 { font-size: 1.2em; }
  .css3 { font-size: 1.4em; }
  .css4 { font-size: 1.6em; }

=== Caching

It is useful to cache the list of tags to reduce the number of queries executed. To do this,
add a column named <tt>cached_tag_list</tt> to the model which is being tagged. The column should be long enough to hold
the full tag list and must have a default value of null, not an empty string.

  class CachePostTagList < ActiveRecord::Migration
    def self.up
      add_column :posts, :cached_tag_list, :string
    end
  end

  class Post < ActiveRecord::Base
    acts_as_taggable
    
    # The caching column defaults to cached_tag_list, but can be changed:
    # 
    # set_cached_tag_list_column_name "my_caching_column_name"
  end

The details of the caching are handled for you. Just continue to use the tag_list accessor as you normally would.
Note that the cached tag list will not be updated if you directly create Tagging objects or manually append to the
<tt>tags</tt> or <tt>taggings</tt> associations. To update the cached tag list you should call <tt>save_cached_tag_list</tt> manually.

=== Delimiter

If you want to change the delimiter used to parse and present tags, set TagList.delimiter.
For example, to use spaces instead of commas, add the following to config/environment.rb:

  TagList.delimiter = " "
  
You can also use a regexp as delimiter:

  TagList.delimiter = /,|;/
  
The above code would parse the string and use ',' and ';' as delimiters.

=== Unused tags

Set Tag.destroy_unused to remove tags when they are no longer being
used to tag any objects. Defaults to false.

  Tag.destroy_unused = true

=== Other

Problems, comments, and suggestions all welcome. [email protected]  

More Repositories

1

googlecharts

Ruby Google Chart API
Ruby
699
star
2

Weasel-Diesel

DSL to describe, document and test web services
Ruby
438
star
3

merb-book

Open Source Merb book
Ruby
186
star
4

filebuffer

filebuffer is a package implementing a few file-like interfaces. The implementation is backed by a byte buffer. The main purpose is to have in-memory file alternative.
Go
142
star
5

sinatra-web-api-example

Example application using Sinatra and the DSL gem to develop web APIs using a simple DSL and a small stack.
JavaScript
121
star
6

MacRuby--The-Definitive-Guide

MacRuby: The Definitive Guide - code repo
Ruby
119
star
7

goRailsYourself

A suite of useful functions needed when porting/mixing Go/Rails code.
Go
93
star
8

mimetype-fu

get the mimetype of a file directly in Ruby
Ruby
83
star
9

wd-sinatra

Weasel-Diesel Sinatra app gem, allowing you to generate/update sinatra apps using the Weasel Diesel DSL
Ruby
75
star
10

audio

This is a playground, production ready code is available at https://github.com/go-audio/
Go
74
star
11

goHtmlTemplateExample

Example setting up a Golang web server with static files, HTML templates and Angular.js
Go
67
star
12

globalite

Globalite is meant to be a breed of the best i18n /l10n plugins available for Rails.
Ruby
60
star
13

m3u8Grabber

Experimental command line tool downloading the content of a m3u8 file containing TS video segments and converting them to mkv.
Go
58
star
14

macruby_graphics

Cocoa's Core Graphics & Core Image wrapper for MacRuby (see original author's branch in the link below)
Ruby
57
star
15

ok-go

Google Assistant SDK in Go
Go
57
star
16

GC-stats-middleware

Ruby GC Stats after each request (rack middleware)
50
star
17

fire-and-forget

[Not maintained] Very dumb HTTP "client" that fires requests and doesn't care about the response.
Ruby
44
star
18

ruby-web-search

A Ruby gem that provides a way to retrieve search results via the main search engines using Ruby
Ruby
44
star
19

i18n

Basic internationalization(i18n) library for Ruby
Ruby
36
star
20

LiveTV

Simple OS X application allowing you to watch some live free TV channels (French, English, Italian).
Objective-C
33
star
21

macruby-httpwrapper

simplified http wrapper for MacRuby/RubyMotion using delegation/ruby block
Ruby
29
star
22

phileas_frog

MacRuby video game using Cocoa's CoreAnimation
Ruby
27
star
23

waveform_demo

Flutter Waveform drawing demo repo
Dart
24
star
24

go-web-api-demo

Example implementation of a web API in Go
Go
22
star
25

sm-808

Programming exercise - code the sequencer part of a Drum Machine
21
star
26

merb_babel

Merb Babel is a dead simple translation/localization tool for Merb
Ruby
19
star
27

pluzzdl

My own fork of pluzzdl
Python
17
star
28

noko-vs-builder-benchmark

Rails app to benchmark Nokogiri's XML builder vs Builder
Ruby
15
star
29

WSDSL

Due to a confusing name, this project was renamed and moved to:
Ruby
14
star
30

macruby-json

reimplementation of the ruby json gem for macruby using objc
Ruby
13
star
31

ar-backup

Active Record backup is a Rails plugin which lets you backup your database schema and content in a schema.rb file and fixtures.
Ruby
13
star
32

MacRuby-Siri

Simple demo showing how to use the voice recognition feature of OS X to implement a Siri-like app in MacRuby,
Ruby
13
star
33

macruby-doc-app

simple experiment to query the cocoa and eventually the macruby doc
Ruby
13
star
34

globalite-example

Sample app showing how to implement GlobaLite in a Rails app
Ruby
11
star
35

merb-static-pages-slice

Use markdown files to store and serve static pages (about us, contact us, etc)
Ruby
11
star
36

multibyte

Ruby Multibyte library extracted from ActiveSupport
Ruby
10
star
37

Pvwatts

Wrapper around the http://www.nrel.gov/rredc/pvwatts/ web service API
Ruby
10
star
38

sinatra-wsdsl-example

moved to https://github.com/mattetti/sinatra-web-api-example
JavaScript
10
star
39

TVFrancaise

Simple OS X application allowing you to watch most of the free French TV channels live. (works overseas)
Ruby
10
star
40

apple-remote-wrapper

fork of Martin Kahr work on an Apple Remote Wrapper
Objective-C
8
star
41

IOLI-crackme

crackme exercises with instructions to learn in a safe environment
C++
7
star
42

monkey_patcher

keep track of your monkey patches
7
star
43

google-speech

Fun with Google Cloud Platform speech recognition API
Go
7
star
44

fasthttp

FastHTTP is a Ruby library suitable for use as a drop-in Net::HTTP replacement or with event frameworks like EventMachine and Rev
C
6
star
45

swx-ruby

Ruby implementation of SWX RPC
Ruby
6
star
46

cocoa

Pure Go reimplementation of some Cocoa specific features.
Go
6
star
47

simple_merb_example_app

simple app example, look at the branches to see how to build the app
Ruby
6
star
48

dm-gvideo-adapter

DataMapper adapter for google video
Ruby
6
star
49

herbs

Hopefully Exhaustive Ruby Benchmark Suite
Ruby
5
star
50

merb_training_site

5
star
51

Box2d

My Box2d fork which has the iPhone TestBed compiling under Xcode4
C++
5
star
52

hotocoa-roundtransparentwindow

HotCocoa(MacRuby) port of Apple's RoundTransparentWindow sample using a Nib
5
star
53

MacRuby-Chipmunk

Cocoa Framework designed to use Chipmunk Physics with MacRuby
C
5
star
54

MrStuff

MacRuby experimental wrappers
Ruby
5
star
55

merb-misc

misc stuff related to Merb
Ruby
5
star
56

RubyConfX-code

The code used for my MacRuby talk at RubyConf X | demos: iVoiceControl (voice recognition), PS3 controller + MacRuby + HTML5, tokenization, headless browser and gowalla sample.
JavaScript
5
star
57

sdruby-raffle

Tiny Ruby gem to pick raffle winners
Ruby
4
star
58

merb_latest_rss_items_slice

Just a test Merb Slice displaying the latest RSS items from a feed
Ruby
4
star
59

PS3SixAxis

Use a PS3 Dualshock 3 Controller with Cocoa
JavaScript
4
star
60

drumbeat

Drum beat is a Go library to handle drum beat patterns
Go
4
star
61

ma-agile

CSS
4
star
62

learning_scala

Misc stuff you might care about when learning scala
Scala
4
star
63

plex-web-client

JavaScript
4
star
64

uuid

Go UUID package - use at your own risk
Go
4
star
65

artist_portfolio

Shoes app displaying an artist portfolio using Flickr as a source for content
Ruby
4
star
66

phare

native osx client for lighthouseapp.com
Ruby
4
star
67

mattetti.github.com.old

Matt Aimonetti's home page
JavaScript
4
star
68

merb-book-tmbundle

A TextMate bundle for the merb-book bundle
3
star
69

couchrest-app

CouchApp for CouchRest logger middleware. Browse and analyze your logs directly from Couch
JavaScript
3
star
70

cbc

CBC/radio-canada has great content and in some cases, one might be interested in keeping a backup
Go
3
star
71

MacRuby-NSCollectionView

example for @tronathan
Ruby
3
star
72

bottetti

my irc bot
CoffeeScript
3
star
73

scrapbook

Experiment designed to reflect on the organization of web scraping/data processing.
Ruby
3
star
74

go-exercises

Hopefully fun exercises in Golang. Each exercise has a test suite and your mission to make it pass!
Go
3
star
75

merb-doc

Stuff to generate docs for Merb outside of an app
Ruby
3
star
76

pubnub-publisher

A Ruby publisher gem for PubNub (for those who only care about publishing from Ruby)
Ruby
2
star
77

macruby-raffle

raffle app
Ruby
2
star
78

macruby-roundtransparentwindow

MacRuby port of Apple's RoundTransparentWindow sample
Ruby
2
star
79

sandbox

testing different things, nothing very interesting
Ruby
2
star
80

pastis

fresh and relaxing experimentation
Ruby
2
star
81

misc-Python-experiments

nothing valuable in here, just me playing with Python
Python
2
star
82

dm-websearch-adapter

2
star
83

ruby_practice

series of random exercises to practice Ruby
Ruby
2
star
84

MacRuby-ScriptingBridge-Browser

A ScriptingBridge browser for MacRuby, quite like AppleScript Editor's dictionary browser.
Objective-C
2
star
85

sigen

signature generator written in Ruby and using RMagick
Ruby
2
star
86

merbthor

2
star
87

UnityAzureSpeechSynthesis

Quick demo showing how to use Azure Speech Synthesis (tts) from Unity and loading/playing the generated file in game.
ShaderLab
2
star
88

gvideo

retrieve a google user's list of videos using his user id.
Ruby
2
star
89

LCFF

Luca's Cow Fart Filter
Go
2
star
90

http-proxy-experiment

Simple http proxy server written in Go to learn the language. The goal of this server is to proxy some defined websites with full cookie support.
Go
1
star
91

ruby-exercises

simple katas and exercises prepared for SDRuby meetups.
Ruby
1
star
92

bugsnag-go

bugsnag.com API client in Go
Go
1
star
93

twitter_game_bot

A twitter bot
Ruby
1
star
94

revel_addons

Series of packages for the Revel Go Framework
Go
1
star
95

s2s-auth

s2s auth gem based on ActiveSupport's crypto
Ruby
1
star
96

paca

Selenium IDE test case converter to Go tests to be run via Agouti
Go
1
star
97

wd_sinatra_active_record

ActiveRecord helper for Weasel Diesel Sinatra apps. See https://github.com/mattetti/wd-sinatra
Ruby
1
star
98

Andromeda

The goal is to provide a highly concurrent public facing API that dispatches requests to other APIs via different protocols (HTTP, Thrift..)
Scala
1
star
99

webserver-test-plan

Shell
1
star
100

macruby-twitter_engine

MGTwitterEngine package for MacRuby/HotCocoa
Objective-C
1
star