honeypot-captcha 0.0.2 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.markdown +86 -7
- data/VERSION +1 -1
- data/lib/honeypot-captcha/form_tag_helper.rb +37 -16
- data/lib/honeypot-captcha.rb +13 -1
- metadata +134 -44
- data/.document +0 -5
- data/.gitignore +0 -21
- data/Rakefile +0 -45
- data/honeypot-captcha.gemspec +0 -46
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: de70aea71253224308afd97ec53f4b3c5d0f27b4268d072ca5b53ea7eb73a148
|
4
|
+
data.tar.gz: b4da23ac08e48707139cb823f0aa64617e72addebb2f965c897d71d444e59e67
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 813eae953f01c398c378bf8c3dc7f965fb638c709337bcaff9ebf022c684f8eb956969dd3758c2fe7a731d822dfc3ab2a83868e54129479ece775cd7eb0e4afc
|
7
|
+
data.tar.gz: 603bae094ed48572cada9b9a537c2b304459296bdea2942d9b51deaf8b819caaddfe1f44ff6fbae064a18de0faad0a66226acf1c296c2e604a3315d0ad47dbec
|
data/README.markdown
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Honeypot Captcha
|
2
2
|
|
3
|
-
|
3
|
+
**The simplest way to add honeypot captchas in your Rails forms.**
|
4
4
|
|
5
5
|
Honeypot captchas work off the premise that you can present different form
|
6
6
|
fields to a spam bot than you do to a real user. Spam bots will typically try
|
@@ -12,17 +12,27 @@ submitted with values. If they are, we assume that we encountered a spam bot.
|
|
12
12
|
* [Honeypot Captcha by Phil Haack](http://haacked.com/archive/2007/09/11/honeypot-captcha.aspx)
|
13
13
|
* [Stopping spambots with hashes and honeypots](http://nedbatchelder.com/text/stopbots.html)
|
14
14
|
|
15
|
+
## Requirements
|
16
|
+
|
17
|
+
* Rails >= 2.3.8
|
18
|
+
|
19
|
+
## Installation
|
20
|
+
|
21
|
+
In your Gemfile, simply add
|
22
|
+
|
23
|
+
gem 'honeypot-captcha'
|
15
24
|
|
16
25
|
## Usage
|
17
26
|
|
18
27
|
I've tried to make it pretty simple to add a honeypot captcha, but I'm open to
|
19
|
-
any suggestions you may have.
|
28
|
+
any suggestions you may have. By default, `create` and `update` actions are
|
29
|
+
protected. For other actions, see [below](#protection-for-actions-other-than-create-and-update).
|
20
30
|
|
21
31
|
### form_for
|
22
32
|
|
23
33
|
Simply specify that the form has a honeypot in the HTML options hash:
|
24
34
|
|
25
|
-
|
35
|
+
<%= form_for Comment.new, :html => { :honeypot => true } do |form| -%>
|
26
36
|
...
|
27
37
|
<% end -%>
|
28
38
|
|
@@ -30,7 +40,7 @@ Simply specify that the form has a honeypot in the HTML options hash:
|
|
30
40
|
|
31
41
|
Simply specify that the form has a honeypot in the options hash:
|
32
42
|
|
33
|
-
|
43
|
+
<%= form_tag comments_path, :honeypot => true do -%>
|
34
44
|
...
|
35
45
|
<% end -%>
|
36
46
|
|
@@ -42,8 +52,66 @@ Simply specify that the form has a honeypot in the options hash:
|
|
42
52
|
...
|
43
53
|
</form>
|
44
54
|
|
55
|
+
### simple_form_for
|
56
|
+
|
57
|
+
Simply specify that the form has a honeypot in the HTML options hash:
|
58
|
+
|
59
|
+
<%= simple_form_for Comment.new, :html => { :honeypot => true } do |form| -%>
|
60
|
+
...
|
61
|
+
<% end -%>
|
62
|
+
|
63
|
+
### Protection for actions other than `create` and `update`
|
64
|
+
|
65
|
+
If you are submitting a form to a non-RESTful action and require
|
66
|
+
honeypot protection, simply add the before filter for that action
|
67
|
+
in your controller. For example:
|
68
|
+
|
69
|
+
class NewsletterController < ApplicationController
|
70
|
+
prepend_before_action :protect_from_spam, :only => [:subscribe]
|
71
|
+
...
|
72
|
+
end
|
73
|
+
|
74
|
+
### Customizing the honeypot fields
|
75
|
+
|
76
|
+
Override the `honeypot_fields` method within `ApplicationController` to
|
77
|
+
add your own custom field names and values. For example:
|
78
|
+
|
79
|
+
def honeypot_fields
|
80
|
+
{
|
81
|
+
:my_custom_comment_body => 'Do not fill in this field, sucka!',
|
82
|
+
:another_thingy => 'Really... do not fill out!'
|
83
|
+
}
|
84
|
+
end
|
85
|
+
|
86
|
+
NOTE: `honeypot_fields` hash keys are used at the beginning of the generated HTML id attributes. The HTML 4.01 spec states that ids must start with a letter ([A-Za-z]), so be aware of this when creating the hash keys. HTML5 is much less strict.
|
87
|
+
|
88
|
+
Override the `honeypot_string` method within `ApplicationController` to
|
89
|
+
disguise the string that will be included in the honeypot name. For example:
|
90
|
+
|
91
|
+
def honeypot_string
|
92
|
+
'im-not-a-honeypot-at-all'
|
93
|
+
end
|
94
|
+
|
95
|
+
Override the `honeypot_style_class` method within `ApplicationController` to
|
96
|
+
provide a non-inline CSS class that will be applied to hide honeypot fields
|
97
|
+
(if nil, the style will be applied inline). For example:
|
98
|
+
|
99
|
+
def honeypot_style_class
|
100
|
+
'display-none'
|
101
|
+
end
|
102
|
+
|
103
|
+
... assigns an HTML class for styling purposes:
|
104
|
+
|
105
|
+
<div id="login_hp_1464171481" class="display-none">
|
106
|
+
|
107
|
+
... which can be styled by a CSS style within app/assets/stylesheets:
|
108
|
+
|
109
|
+
.display-none {
|
110
|
+
display: none;
|
111
|
+
}
|
112
|
+
|
45
113
|
## Note on Patches/Pull Requests
|
46
|
-
|
114
|
+
|
47
115
|
* Fork the project.
|
48
116
|
* Make your feature addition or bug fix.
|
49
117
|
* Add tests for it. This is important so I don't break it in a future version unintentionally.
|
@@ -51,13 +119,24 @@ Simply specify that the form has a honeypot in the options hash:
|
|
51
119
|
* Send me a pull request. Bonus points for topic branches.
|
52
120
|
|
53
121
|
## Author
|
122
|
+
Created by [Curtis Miller](http://millarian.com) of Velocity Labs, a
|
123
|
+
[Ruby on Rails development company](http://velocitylabs.io).
|
124
|
+
|
125
|
+
### Collaborators
|
54
126
|
|
55
|
-
|
127
|
+
* [Dave Tapley](https://github.com/dukedave)
|
56
128
|
|
57
129
|
### Contributors
|
58
130
|
|
131
|
+
Thank you to all contributors!
|
132
|
+
|
59
133
|
* [Eric Saxby](http://github.com/sax)
|
134
|
+
* [Bernard Grymonpon](https://github.com/wonko)
|
135
|
+
* [rchekaluk](https://github.com/rchekaluk)
|
136
|
+
* [Sunny Ripert](https://github.com/sunny)
|
137
|
+
* [RandieM](https://github.com/RandieM)
|
138
|
+
* [Wayne Steven See](https://github.com/weynsee)
|
60
139
|
|
61
140
|
## Copyright
|
62
141
|
|
63
|
-
Copyright (c) 2010 Curtis Miller. See LICENSE for details.
|
142
|
+
Copyright (c) 2010-2019 Curtis Miller. See LICENSE for details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
1.0.1
|
@@ -2,36 +2,57 @@
|
|
2
2
|
module ActionView
|
3
3
|
module Helpers
|
4
4
|
module FormTagHelper
|
5
|
-
def
|
6
|
-
honeypot = options.delete(:honeypot)
|
7
|
-
html
|
5
|
+
def form_tag_html_with_honeypot(options)
|
6
|
+
honeypot = options.delete(:honeypot) || options.delete('honeypot')
|
7
|
+
html = form_tag_html_without_honeypot(options)
|
8
|
+
|
8
9
|
if honeypot
|
9
|
-
captcha =
|
10
|
+
captcha = honey_pot_captcha
|
11
|
+
|
10
12
|
if block_given?
|
11
13
|
html.insert(html.index('</form>'), captcha)
|
12
14
|
else
|
13
15
|
html += captcha
|
14
16
|
end
|
15
17
|
end
|
18
|
+
|
16
19
|
html
|
17
20
|
end
|
18
|
-
|
21
|
+
alias_method :form_tag_html_without_honeypot, :form_tag_html
|
22
|
+
alias_method :form_tag_html, :form_tag_html_with_honeypot
|
19
23
|
|
20
24
|
private
|
21
25
|
|
22
26
|
def honey_pot_captcha
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
content_tag :div, :id => html_id do
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
label_tag(f, l) +
|
31
|
-
send([:text_field_tag, :text_area_tag][rand(2)], f)
|
27
|
+
honeypot_fields.collect do |key, value|
|
28
|
+
html_id = sanitized_html_id(key)
|
29
|
+
|
30
|
+
content_tag :div, { :id => html_id }.merge(style_attributes) do
|
31
|
+
style_tag(html_id) +
|
32
|
+
label_tag(key, value) +
|
33
|
+
send([:text_field_tag, :text_area_tag][rand(2)], key)
|
32
34
|
end
|
33
|
-
|
35
|
+
|
36
|
+
end.join.html_safe
|
37
|
+
end
|
38
|
+
|
39
|
+
def sanitized_html_id(key)
|
40
|
+
"#{key}_#{honeypot_string}_#{Time.current.to_i + rand(999)}".gsub(/\]\[|[^-a-zA-Z0-9:.]/, "_")
|
41
|
+
end
|
42
|
+
|
43
|
+
def style_attributes
|
44
|
+
return {} if honeypot_style_class.blank?
|
45
|
+
|
46
|
+
{ :class => honeypot_style_class }
|
47
|
+
end
|
48
|
+
|
49
|
+
def style_tag(html_id)
|
50
|
+
return ''.html_safe if honeypot_style_class.present?
|
51
|
+
|
52
|
+
content_tag(:style, :type => 'text/css', :media => 'screen', :scoped => "scoped") do
|
53
|
+
"[id='#{html_id}'] { display:none; }".html_safe
|
54
|
+
end.html_safe
|
34
55
|
end
|
35
56
|
end
|
36
57
|
end
|
37
|
-
end
|
58
|
+
end
|
data/lib/honeypot-captcha.rb
CHANGED
@@ -6,14 +6,26 @@ module HoneypotCaptcha
|
|
6
6
|
{ :a_comment_body => 'Do not fill in this field' }
|
7
7
|
end
|
8
8
|
|
9
|
+
def honeypot_string
|
10
|
+
'hp'
|
11
|
+
end
|
12
|
+
|
13
|
+
def honeypot_style_class
|
14
|
+
nil
|
15
|
+
end
|
16
|
+
|
9
17
|
def protect_from_spam
|
10
18
|
head :ok if honeypot_fields.any? { |f,l| !params[f].blank? }
|
11
19
|
end
|
12
20
|
|
13
21
|
def self.included(base) # :nodoc:
|
14
22
|
base.send :helper_method, :honeypot_fields
|
23
|
+
base.send :helper_method, :honeypot_string
|
24
|
+
base.send :helper_method, :honeypot_style_class
|
15
25
|
|
16
|
-
if base.respond_to? :
|
26
|
+
if base.respond_to? :before_action
|
27
|
+
base.send :prepend_before_action, :protect_from_spam, :only => [:create, :update]
|
28
|
+
elsif base.respond_to? :before_filter
|
17
29
|
base.send :prepend_before_filter, :protect_from_spam, :only => [:create, :update]
|
18
30
|
end
|
19
31
|
end
|
metadata
CHANGED
@@ -1,71 +1,161 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: honeypot-captcha
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
segments:
|
6
|
-
- 0
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
version: 0.0.2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.1
|
10
5
|
platform: ruby
|
11
|
-
authors:
|
6
|
+
authors:
|
12
7
|
- curtis
|
13
8
|
autorequire:
|
14
9
|
bindir: bin
|
15
10
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
11
|
+
date: 2019-02-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: actionview
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: railties
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.8'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.8'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec-html-matchers
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rdoc
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '6.1'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '6.1'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: bundler
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '2'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '2'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: jeweler
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '2.3'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '2.3'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: simplecov
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
21
125
|
description: A simple way to add honeypot captchas to Rails forms
|
22
|
-
email: curtis@
|
126
|
+
email: curtis@velocitylabs.io
|
23
127
|
executables: []
|
24
|
-
|
25
128
|
extensions: []
|
26
|
-
|
27
|
-
extra_rdoc_files:
|
129
|
+
extra_rdoc_files:
|
28
130
|
- LICENSE
|
29
131
|
- README.markdown
|
30
|
-
files:
|
31
|
-
- .document
|
32
|
-
- .gitignore
|
132
|
+
files:
|
33
133
|
- LICENSE
|
34
134
|
- README.markdown
|
35
|
-
- Rakefile
|
36
135
|
- VERSION
|
37
|
-
- honeypot-captcha.gemspec
|
38
136
|
- lib/honeypot-captcha.rb
|
39
137
|
- lib/honeypot-captcha/form_tag_helper.rb
|
40
|
-
has_rdoc: true
|
41
138
|
homepage: http://github.com/curtis/honeypot-captcha
|
42
139
|
licenses: []
|
43
|
-
|
140
|
+
metadata: {}
|
44
141
|
post_install_message:
|
45
|
-
rdoc_options:
|
46
|
-
|
47
|
-
require_paths:
|
142
|
+
rdoc_options: []
|
143
|
+
require_paths:
|
48
144
|
- lib
|
49
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
50
|
-
requirements:
|
145
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
146
|
+
requirements:
|
51
147
|
- - ">="
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
57
|
-
requirements:
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0'
|
150
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
|
+
requirements:
|
58
152
|
- - ">="
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
|
61
|
-
- 0
|
62
|
-
version: "0"
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: '0'
|
63
155
|
requirements: []
|
64
|
-
|
65
156
|
rubyforge_project:
|
66
|
-
rubygems_version:
|
157
|
+
rubygems_version: 2.7.8
|
67
158
|
signing_key:
|
68
|
-
specification_version:
|
159
|
+
specification_version: 4
|
69
160
|
summary: A simple way to add honeypot captchas to Rails forms
|
70
161
|
test_files: []
|
71
|
-
|
data/.document
DELETED
data/.gitignore
DELETED
data/Rakefile
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'rake'
|
3
|
-
|
4
|
-
begin
|
5
|
-
require 'jeweler'
|
6
|
-
Jeweler::Tasks.new do |gem|
|
7
|
-
gem.name = "honeypot-captcha"
|
8
|
-
gem.summary = %Q{A simple way to add honeypot captchas to Rails forms}
|
9
|
-
gem.description = %Q{A simple way to add honeypot captchas to Rails forms}
|
10
|
-
gem.email = "curtis@flatterline.com"
|
11
|
-
gem.homepage = "http://github.com/curtis/honeypot-captcha"
|
12
|
-
gem.authors = ["curtis"]
|
13
|
-
# gem.add_development_dependency "rspec", ">= 1.2.9"
|
14
|
-
# gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
|
15
|
-
end
|
16
|
-
Jeweler::GemcutterTasks.new
|
17
|
-
rescue LoadError
|
18
|
-
puts "Jeweler (or a dependency) not available. Install it with: gem install jeweler"
|
19
|
-
end
|
20
|
-
|
21
|
-
require 'spec/rake/spectask'
|
22
|
-
Spec::Rake::SpecTask.new(:spec) do |spec|
|
23
|
-
spec.libs << 'lib' << 'spec'
|
24
|
-
spec.spec_files = FileList['spec/**/*_spec.rb']
|
25
|
-
end
|
26
|
-
|
27
|
-
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
28
|
-
spec.libs << 'lib' << 'spec'
|
29
|
-
spec.pattern = 'spec/**/*_spec.rb'
|
30
|
-
spec.rcov = true
|
31
|
-
end
|
32
|
-
|
33
|
-
task :spec => :check_dependencies
|
34
|
-
|
35
|
-
task :default => :spec
|
36
|
-
|
37
|
-
require 'rake/rdoctask'
|
38
|
-
Rake::RDocTask.new do |rdoc|
|
39
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
40
|
-
|
41
|
-
rdoc.rdoc_dir = 'rdoc'
|
42
|
-
rdoc.title = "honeypot-captcha #{version}"
|
43
|
-
rdoc.rdoc_files.include('README*')
|
44
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
45
|
-
end
|
data/honeypot-captcha.gemspec
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
# Generated by jeweler
|
2
|
-
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
-
# -*- encoding: utf-8 -*-
|
5
|
-
|
6
|
-
Gem::Specification.new do |s|
|
7
|
-
s.name = %q{honeypot-captcha}
|
8
|
-
s.version = "0.0.2"
|
9
|
-
|
10
|
-
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
-
s.authors = ["curtis"]
|
12
|
-
s.date = %q{2010-05-23}
|
13
|
-
s.description = %q{A simple way to add honeypot captchas to Rails forms}
|
14
|
-
s.email = %q{curtis@flatterline.com}
|
15
|
-
s.extra_rdoc_files = [
|
16
|
-
"LICENSE",
|
17
|
-
"README.markdown"
|
18
|
-
]
|
19
|
-
s.files = [
|
20
|
-
".document",
|
21
|
-
".gitignore",
|
22
|
-
"LICENSE",
|
23
|
-
"README.markdown",
|
24
|
-
"Rakefile",
|
25
|
-
"VERSION",
|
26
|
-
"honeypot-captcha.gemspec",
|
27
|
-
"lib/honeypot-captcha.rb",
|
28
|
-
"lib/honeypot-captcha/form_tag_helper.rb"
|
29
|
-
]
|
30
|
-
s.homepage = %q{http://github.com/curtis/honeypot-captcha}
|
31
|
-
s.rdoc_options = ["--charset=UTF-8"]
|
32
|
-
s.require_paths = ["lib"]
|
33
|
-
s.rubygems_version = %q{1.3.6}
|
34
|
-
s.summary = %q{A simple way to add honeypot captchas to Rails forms}
|
35
|
-
|
36
|
-
if s.respond_to? :specification_version then
|
37
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
38
|
-
s.specification_version = 3
|
39
|
-
|
40
|
-
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
41
|
-
else
|
42
|
-
end
|
43
|
-
else
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|