public
Description: Easy Akismet integration for your Rails app
Clone URL: git://github.com/jfrench/rakismet.git
Search Repo:
name age message
folder MIT-LICENSE Sun Apr 20 17:12:02 -0700 2008 Initial import [jfrench]
folder README Tue Jul 01 19:39:10 -0700 2008 Documentation [jfrench]
folder init.rb Sun Apr 20 17:12:02 -0700 2008 Initial import [jfrench]
folder install.rb Sun Apr 20 17:12:02 -0700 2008 Initial import [jfrench]
folder lib/ Tue Jul 01 19:42:40 -0700 2008 Report proper version to Akismet [jfrench]
folder spec/ Tue Jul 01 19:39:20 -0700 2008 Fix bug when attempting to define a Rakismet at... [jfrench]
folder uninstall.rb Sun Apr 20 17:12:02 -0700 2008 Initial import [jfrench]
README
Rakismet
========

Akismet [http://akismet.com/] is a collaborative spam filtering service.
Rakismet is easy Akismet integration with your Rails app.


Setup
=====

Install with script/plugin install git://github.com/jfrench/rakismet

To get up and running with Rakismet, you'll need an API key from the folks at
WordPress. Head on over to http://wordpress.com/api-keys/ and sign up for a
new username.

Rakismet installation should have created a file called rakismet.rb in
config/initializers. Add your WordPress key and the front page or home URL of
your app. Rakismet::URL must be a fully qualified URI including the http://.

If that file is missing, create it and add the following:

  Rakismet::KEY = 'your key from WordPress'
  Rakismet::URL = 'http://base url for your application/'

Now introduce Rakismet to your application. Let's assume you have a Comment
model and a CommentsController:

  class Comment < ActiveRecord::Base
    has_rakismet
  end

  class CommentController < ActionController::Base
    has_rakismet
  end

Rakismet sends the following information to the spam-hungry robots at Akismet,
which means these attributes should be stored in your Comment model or
accessible through that class's associations.

  author        : name submitted with the comment
  author_url    : URL submitted with the comment
  author_email  : email submitted with the comment
  comment_type  : 'comment', 'trackback', 'pingback', or whatever you fancy
  content       : the content submitted
  permalink     : the permanent URL for the entry the comment belongs to
  ##  These last 3 fields don't need to be defined  ##
  ##  if you're not storing them in the database.   ##
  user_ip       : IP address used to submit this comment
  user_agent    : user agent string
  referrer      : http referer

user_ip, user_agent, and referer are optional; you don't have to store them,
but it's a good idea. If you omit them from the Rakismet definition (see
below), the +spam?+ method will look around in your request environment and
find them there. This means that Rakismet is meant to be used in a synchronous
fashion -- validating comments as they are submitted by the user, not placed
in a queue for later spam-checking.

Customizing Attributes
======================

If your attributes don't match those listed above, or if some of them live on
other objects, you pass has_rakismet a hash mapping the default attributes to
your own. You can change the names, if your comment attributes don't match the
Rakismet defaults:

  has_rakismet :author => :commenter_name,
               :author_email => :commenter_email

You can also pass in a proc, to access associations:

  belongs_to :author
  has_rakismet :author => proc { author.name },
               :author_email => proc { author.email }

For any attribute you don't explicitly define, Rakismet will try to find an
attribute or method matching the default name. As mentioned above, you can
either map user_ip, user_agent, and referer here or omit them and Rakismet
will look for them in the request environment when you call +spam?+.

Usage
=====

Rakismet provides three methods for interacting with Akismet:

  spam?

From within a CommentsController action, simply call @comment.spam? to get a
true/false response. True means it's spam, false means it's not. Well,
usually; it's possible something went wrong and Akismet returned an error
message. @comment.spam? will return false if this happens. You can check
@comment.akismet_response to be certain; anything other than 'true' or 'false'
means you got an error. That said, as long as you're collecting the data
listed above it's probably sufficient to check spam? alone.

  ham! and spam!

Akismet works best with your feedback. If you spot a comment that was
erroneously marked as spam, @comment.ham! will resubmit to Akismet, marked as
a false positive. Likewise if they missed a spammy comment, @comment.spam!
will resubmit marked as spam.


Copyright (c) 2008 Josh French, released under the MIT license