0.0
No commit activity in last 3 years
No release in over 3 years
A honeypot style captcha extension for ActiveRecord. Simple one-line inclusion in the model combined with a simple form field should trap the bad guys in the molasses.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

 Project Readme

molasses_jar

A simple ActiveRecord extension for creating inverse captchas using the Honeypot pattern.

An inverse captcha uses a specific form field that the user does not see, but bots and spiders will. If a value is set on the input, then the model is marked as being either spam or invalid depending on how you chose to implement the gem.

Nuts and Bolts

MolassesJar will add simple honeypot verification to any model you wish. It creates an attribute called :molasses_jar on the desired object and then checks to see if there is a value assigned to it.

MolassesJar will look for a boolean attribute called spam on your model. If it finds it, it will update the attribute to be true if it thinks the record is being submitted by a robot, thus preventing the loss of legitimate content.

If it does not find a spam attribute on your model, it will add an error to the molasses_jar attribute, thus preventing the model from validating and saving.

How To Use

Install the gem through Bundler

gem "molasses_jar"

If flagging is desired, add a spam attribute to your Model

Generate a migration to add the spam attribute to your model. It is recommended that you index the attribute sice it will appear in a where clause through the included scope

def change
	add_column :contact_forms, :spam, :boolean, :default => false
	add_index :contact_forms, :spam
	ContactForm.update_all(:spam => false)
end

Add the Extensions to your Model

class ContactForm < ActiveRecord::Base  
	include MolassesJar::Extensions  
end

Add the input to your forms

You will need to add an input to your object's form with the attribute :molasses_jar. Then use css, to either display: none; or move the form off the screen using absolute positioning. Best practices suggests you include a label with your input field and include some sort of message that says "If you're a human, please leave this field blank" to insure accessability.

HTML/HAML

= form.label :molasses_jar, "If you are a human, please leave this field blank", :class => "agglutinative"
= form.text_field :molasses_jar, :class => "agglutinative"

CSS

.agglutinative {
	display: none;
}

Testing

Specs are current. Please refer to spec/molasses_jar_spec.rb for testing examples. More to come soon.

Coming Soon

  • Form Helper to create the form input
  • Migration generator for the spam attribute
  • Stylesheet generator to create the stylesheet

Interesting Reads on the Honeypot Approach

Contributing to molasses_jar

  • Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
  • Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
  • Fork the project.
  • Start a feature/bugfix branch.
  • Commit and push until you are happy with your contribution.
  • Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
  • Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.

Copyright

Copyright (c) 2012 mindtonic. See LICENSE.txt for further details.