acts_as_textcaptcha 4.0.0 → 4.1.0
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.
- data/CHANGELOG +11 -0
- data/README.rdoc +22 -40
- data/lib/acts_as_textcaptcha.rb +1 -1
- data/lib/acts_as_textcaptcha/textcaptcha.rb +0 -10
- data/lib/acts_as_textcaptcha/textcaptcha_helper.rb +1 -6
- data/lib/acts_as_textcaptcha/version.rb +1 -1
- data/test/test_helper.rb +0 -2
- metadata +179 -159
- checksums.yaml +0 -7
- data/lib/acts_as_textcaptcha/framework/rails2.rb +0 -2
data/CHANGELOG
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
4.1.0 (2 January 2014)
|
2
|
+
* Dropping support for Rails 2
|
3
|
+
* README updated
|
4
|
+
* CHANGELOG (this file) added
|
5
|
+
|
6
|
+
4.0.0 (1 January 2014)
|
7
|
+
* Using a cache store to persist answers between requests
|
8
|
+
* README updated
|
9
|
+
* Test coverage improved
|
10
|
+
|
11
|
+
(no change log available for older releases)
|
data/README.rdoc
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
== ActAsTextcaptcha
|
2
2
|
|
3
|
-
{<img src="https://secure.travis-ci.org/matthutchinson/acts_as_textcaptcha.png" alt="Travis Build Status" align="absmiddle"/>}[https://travis-ci.org/matthutchinson/acts_as_textcaptcha] {<img src="https://coveralls.io/repos/matthutchinson/acts_as_textcaptcha/badge.png" alt="Coverage Status" align="absmiddle" />}[https://coveralls.io/r/matthutchinson/acts_as_textcaptcha] {<img src="https://codeclimate.com/
|
3
|
+
{<img src="https://secure.travis-ci.org/matthutchinson/acts_as_textcaptcha.png" alt="Travis Build Status" align="absmiddle"/>}[https://travis-ci.org/matthutchinson/acts_as_textcaptcha] {<img src="https://coveralls.io/repos/matthutchinson/acts_as_textcaptcha/badge.png" alt="Coverage Status" align="absmiddle" />}[https://coveralls.io/r/matthutchinson/acts_as_textcaptcha] {<img align="absmiddle" src="https://codeclimate.com/github/matthutchinson/acts_as_textcaptcha.png" />}[https://codeclimate.com/github/matthutchinson/acts_as_textcaptcha]
|
4
4
|
|
5
5
|
ActsAsTextcaptcha provides spam protection for your Rails models using logic questions from the excellent {Text CAPTCHA}[http://textcaptcha.com/] web service (by {Rob Tuley}[http://openknot.com/me/] of {Openknot}[http://openknot.com/]). It is also possible to configure your own text captcha questions (instead, or as a fall back in the event of any remote API issues).
|
6
6
|
|
7
|
-
This gem is actively maintained, has good test coverage and is compatible with Rails >=
|
7
|
+
This gem is actively maintained, has good test coverage and is compatible with Rails >= 3.0.0 (including Rails 4). If you have any issues {please report them here}[https://github.com/matthutchinson/acts_as_textcaptcha/issues/new].
|
8
8
|
|
9
9
|
Logic questions from the web service are aimed at a child's age of 7, so they can be solved easily by even the most cognitively impaired users. As they involve human logic, questions cannot be solved by a robot. There are both advantages and disadvantages for using logic questions over image based captchas, {find out more at Text CAPTCHA}[http://textcaptcha.com/why].
|
10
10
|
|
@@ -14,31 +14,13 @@ Try a {working demo here}[http://textcaptcha.heroku.com]!
|
|
14
14
|
|
15
15
|
== Installing
|
16
16
|
|
17
|
-
|
17
|
+
*NOTE:* The steps to configure your app changed with the v4.0.* release. If you are having problems please carefully check the steps or {upgrade instructions}[https://github.com/matthutchinson/acts_as_textcaptcha#upgrading-from-3010] below.
|
18
18
|
|
19
|
-
|
19
|
+
First add the following to your Gemfile, then `bundle install`;
|
20
20
|
|
21
21
|
gem 'acts_as_textcaptcha'
|
22
22
|
|
23
|
-
|
24
|
-
|
25
|
-
Add this to your environment.rb file, then `gem install acts_as_textcaptcha`;
|
26
|
-
|
27
|
-
config.gem 'acts_as_textcaptcha'
|
28
|
-
|
29
|
-
=== Or as a plugin (pre Rails 4)
|
30
|
-
|
31
|
-
Install with rails or script/rails as follows;
|
32
|
-
|
33
|
-
rails plugin install git@github.com:matthutchinson/acts_as_textcaptcha.git
|
34
|
-
OR
|
35
|
-
script/plugin install git@github.com:matthutchinson/acts_as_textcaptcha.git
|
36
|
-
|
37
|
-
== Setting up
|
38
|
-
|
39
|
-
*NOTE:* The steps to configure your app changed with the v4.0.* release. If you are having problems please carefully check the steps or {upgrade instructions}[https://github.com/matthutchinson/acts_as_textcaptcha#upgrading-from-3010] below.
|
40
|
-
|
41
|
-
First {grab an API key for your website}[http://textcaptcha.com/api]. Next add the following code to any models you would like to protect;
|
23
|
+
Next {grab an API key for your website}[http://textcaptcha.com/api], then add the following code to models you would like to protect;
|
42
24
|
|
43
25
|
class Comment < ActiveRecord::Base
|
44
26
|
# (this is the simplest way to configure the gem, with an API key only)
|
@@ -54,7 +36,6 @@ Next in your controller's *new* action you'll want to generate and assign the lo
|
|
54
36
|
|
55
37
|
Finally, in your form view add the textcaptcha question and answer fields using the textcaptcha_fields helper. Feel free to arrange the HTML within this block as you like;
|
56
38
|
|
57
|
-
# for Rails 2.3.* change <%= to <% on the next line
|
58
39
|
<%= textcaptcha_fields(f) do %>
|
59
40
|
<div class="field">
|
60
41
|
<%= f.label :textcaptcha_answer, @comment.textcaptcha_question %><br/>
|
@@ -78,15 +59,15 @@ Due to a relatively {large hole}[https://github.com/matthutchinson/acts_as_textc
|
|
78
59
|
=== Toggling Textcaptcha
|
79
60
|
|
80
61
|
You can toggle textcaptcha on/off for your models by overriding the `perform_textcaptcha?` method. If it returns false, no questions will be fetched from
|
81
|
-
the web service and textcaptcha validation is disabled.
|
62
|
+
the web service and textcaptcha validation is disabled.
|
82
63
|
|
83
|
-
This is useful for writing your own custom logic for toggling spam protection on/off e.g. for logged in users. By default the `perform_textcaptcha?` method {checks if the form object is a new (unsaved) record}[https://github.com/matthutchinson/acts_as_textcaptcha/blob/master/lib/acts_as_textcaptcha/textcaptcha.rb#L54].
|
64
|
+
This is useful for writing your own custom logic for toggling spam protection on/off e.g. for logged in users. By default the `perform_textcaptcha?` method {checks if the form object is a new (unsaved) record}[https://github.com/matthutchinson/acts_as_textcaptcha/blob/master/lib/acts_as_textcaptcha/textcaptcha.rb#L54].
|
84
65
|
|
85
66
|
So out of the box, spam protection is only enabled for creating new records (not updating). Here is a typical example showing how to overwrite the `perform_textcaptcha?` method, while maintaining the new record check.
|
86
67
|
|
87
68
|
class Comment < ActiveRecord::Base
|
88
69
|
acts_as_textcaptcha :api_key => 'YOUR_TEXTCAPTCHA_API_KEY'
|
89
|
-
|
70
|
+
|
90
71
|
def perform_textcaptcha?
|
91
72
|
super && user.admin?
|
92
73
|
end
|
@@ -119,18 +100,13 @@ The gem can be configured for models individually (as shown above) or with a con
|
|
119
100
|
|
120
101
|
rake textcaptcha:config
|
121
102
|
|
122
|
-
*NOTE:* For Rails 2.3.*, you'll have to add the following to your Rakefile to reveal this task;
|
123
|
-
|
124
|
-
# load textcaptcha rake tasks
|
125
|
-
Dir["#{Gem.searcher.find('acts_as_textcaptcha').full_gem_path}/lib/tasks/**/*.rake"].each { |ext| load ext } if Gem.searcher.find('acts_as_textcaptcha')
|
126
|
-
|
127
103
|
=== Confguring _without_ the TextCAPTCHA web service
|
128
104
|
|
129
105
|
To use only your own logic questions, simply ommit the api_key from the configuration and define at least 1 logic question and answer (see above).
|
130
106
|
|
131
107
|
== Translations
|
132
108
|
|
133
|
-
The gem uses the standard Rails I18n translation approach
|
109
|
+
The gem uses the standard Rails I18n translation approach (with a fall-back to English). Unfortunately at present, the Text CAPTCHA web service only provides logic questions in English.
|
134
110
|
|
135
111
|
en:
|
136
112
|
activerecord:
|
@@ -146,8 +122,6 @@ The gem uses the standard Rails I18n translation approach for error messages, wi
|
|
146
122
|
comment:
|
147
123
|
textcaptcha_answer: "Textcaptcha answer"
|
148
124
|
|
149
|
-
*NOTE:* currently the Text CAPTCHA API web service only offers logic questions in English.
|
150
|
-
|
151
125
|
== Without Rails or ActiveRecord
|
152
126
|
|
153
127
|
Although this gem has been built with Rails in mind, is entirely possible to use it without ActiveRecord, or Rails. As an example, take a look at the {Contact}[https://github.com/matthutchinson/acts_as_textcaptcha/blob/master/test/test_models.rb#L44] model used in the test suite {here}[https://github.com/matthutchinson/acts_as_textcaptcha/blob/master/test/test_models.rb#L44].
|
@@ -180,7 +154,7 @@ For more details on the code please check the {documentation}[http://rdoc.info/p
|
|
180
154
|
|
181
155
|
What do you need?
|
182
156
|
|
183
|
-
* {Rails}[http://github.com/rails/rails] >=
|
157
|
+
* {Rails}[http://github.com/rails/rails] >= 3.0.0 (including Rails 4)
|
184
158
|
* {Rails.cache}[http://api.rubyonrails.org/classes/ActiveSupport/Cache/Store.html] - some basic cache configuration is nessecary
|
185
159
|
* {Ruby}[http://ruby-lang.org/] >= 1.8.7 (also tested with REE, 1.9.2, 1.9.3, 2.0.0, 2.1.0)
|
186
160
|
* {Text CAPTCHA API key}[http://textcaptcha.com/register] (_optional_, since you can define your own logic questions)
|
@@ -189,6 +163,18 @@ What do you need?
|
|
189
163
|
|
190
164
|
*Note*: The built-in {TextcaptchaCache}[https://github.com/matthutchinson/acts_as_textcaptcha/blob/master/lib/acts_as_textcaptcha/textcaptcha_cache.rb] class directly wraps the {Rails.cache}[http://api.rubyonrails.org/classes/ActiveSupport/Cache/Store.html] object.
|
191
165
|
|
166
|
+
== Rails 2 support
|
167
|
+
|
168
|
+
Support for Rails 2 was dropped with the release of v4.1.0. If you would like to continue to use this gem with an older version of Rails (>= 2.3.8), please lock the version to `4.0.0`. Like so;
|
169
|
+
|
170
|
+
# in your Gemfile
|
171
|
+
gem 'acts_as_textcaptcha', '=4.0.0'
|
172
|
+
|
173
|
+
# or in environment.rb
|
174
|
+
config.gem 'acts_as_textcaptcha', :version => '=4.0.0'
|
175
|
+
|
176
|
+
Check out the {README}[https://github.com/matthutchinson/acts_as_textcaptcha/tree/v4.0.0] for this release for more information.
|
177
|
+
|
192
178
|
== Links
|
193
179
|
|
194
180
|
* {Demo}[http://textcaptcha.heroku.com]
|
@@ -219,10 +205,6 @@ After doing this, you should be able to install the gem with;
|
|
219
205
|
# or with Bundler, specify the HighSecurity trust policy
|
220
206
|
bundle install --trust-policy HighSecurity
|
221
207
|
|
222
|
-
== Todo
|
223
|
-
|
224
|
-
* Remove support for Rails 2.3.* in a future gem release (clean code and tests for this)
|
225
|
-
|
226
208
|
== Usage
|
227
209
|
|
228
210
|
This gem is used in a number of production websites and apps. It was originally extracted from code developed for {Bugle}[http://bugleblogs.com]. If you're happily using acts_as_textcaptcha in production, let me know and I'll add you to this list!
|
data/lib/acts_as_textcaptcha.rb
CHANGED
@@ -6,16 +6,6 @@ require 'acts_as_textcaptcha/textcaptcha_api'
|
|
6
6
|
|
7
7
|
module ActsAsTextcaptcha
|
8
8
|
|
9
|
-
# dont use Railtie if Rails < 3
|
10
|
-
unless Rails::VERSION::MAJOR < 3
|
11
|
-
class Railtie < ::Rails::Railtie
|
12
|
-
rake_tasks do
|
13
|
-
load "tasks/textcaptcha.rake"
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
|
19
9
|
module Textcaptcha #:nodoc:
|
20
10
|
|
21
11
|
def acts_as_textcaptcha(options = nil)
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,186 +1,197 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_textcaptcha
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 59
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 4
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
version: 4.1.0
|
5
11
|
platform: ruby
|
6
|
-
authors:
|
12
|
+
authors:
|
7
13
|
- Matthew Hutchinson
|
8
14
|
autorequire:
|
9
15
|
bindir: bin
|
10
|
-
cert_chain:
|
16
|
+
cert_chain:
|
11
17
|
- gem-public_cert.pem
|
12
|
-
date: 2014-01-
|
13
|
-
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
18
|
+
date: 2014-01-02 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
15
21
|
name: mime-types
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
22
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
23
|
+
none: false
|
24
|
+
requirements:
|
25
|
+
- - ~>
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
hash: 113
|
28
|
+
segments:
|
29
|
+
- 1
|
30
|
+
- 25
|
31
|
+
- 1
|
20
32
|
version: 1.25.1
|
21
|
-
type: :development
|
22
33
|
prerelease: false
|
23
|
-
version_requirements: !ruby/object:Gem::Requirement
|
24
|
-
requirements:
|
25
|
-
- - "~>"
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
version: 1.25.1
|
28
|
-
- !ruby/object:Gem::Dependency
|
29
|
-
name: rails
|
30
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
-
requirements:
|
32
|
-
- - ">="
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: '0'
|
35
34
|
type: :development
|
35
|
+
requirement: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rails
|
38
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
hash: 3
|
44
|
+
segments:
|
45
|
+
- 0
|
46
|
+
version: "0"
|
36
47
|
prerelease: false
|
37
|
-
version_requirements: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - ">="
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: '0'
|
42
|
-
- !ruby/object:Gem::Dependency
|
43
|
-
name: bundler
|
44
|
-
requirement: !ruby/object:Gem::Requirement
|
45
|
-
requirements:
|
46
|
-
- - ">="
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: '0'
|
49
48
|
type: :development
|
49
|
+
requirement: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
51
|
+
name: bundler
|
52
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
hash: 3
|
58
|
+
segments:
|
59
|
+
- 0
|
60
|
+
version: "0"
|
50
61
|
prerelease: false
|
51
|
-
version_requirements: !ruby/object:Gem::Requirement
|
52
|
-
requirements:
|
53
|
-
- - ">="
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
version: '0'
|
56
|
-
- !ruby/object:Gem::Dependency
|
57
|
-
name: minitest
|
58
|
-
requirement: !ruby/object:Gem::Requirement
|
59
|
-
requirements:
|
60
|
-
- - ">="
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '0'
|
63
62
|
type: :development
|
63
|
+
requirement: *id003
|
64
|
+
- !ruby/object:Gem::Dependency
|
65
|
+
name: minitest
|
66
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
67
|
+
none: false
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
hash: 3
|
72
|
+
segments:
|
73
|
+
- 0
|
74
|
+
version: "0"
|
64
75
|
prerelease: false
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - ">="
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '0'
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: simplecov
|
72
|
-
requirement: !ruby/object:Gem::Requirement
|
73
|
-
requirements:
|
74
|
-
- - ">="
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
version: '0'
|
77
76
|
type: :development
|
77
|
+
requirement: *id004
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: simplecov
|
80
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
hash: 3
|
86
|
+
segments:
|
87
|
+
- 0
|
88
|
+
version: "0"
|
78
89
|
prerelease: false
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
|
-
- - ">="
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: '0'
|
84
|
-
- !ruby/object:Gem::Dependency
|
85
|
-
name: rdoc
|
86
|
-
requirement: !ruby/object:Gem::Requirement
|
87
|
-
requirements:
|
88
|
-
- - ">="
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version: '0'
|
91
90
|
type: :development
|
91
|
+
requirement: *id005
|
92
|
+
- !ruby/object:Gem::Dependency
|
93
|
+
name: rdoc
|
94
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
95
|
+
none: false
|
96
|
+
requirements:
|
97
|
+
- - ">="
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
hash: 3
|
100
|
+
segments:
|
101
|
+
- 0
|
102
|
+
version: "0"
|
92
103
|
prerelease: false
|
93
|
-
version_requirements: !ruby/object:Gem::Requirement
|
94
|
-
requirements:
|
95
|
-
- - ">="
|
96
|
-
- !ruby/object:Gem::Version
|
97
|
-
version: '0'
|
98
|
-
- !ruby/object:Gem::Dependency
|
99
|
-
name: sqlite3
|
100
|
-
requirement: !ruby/object:Gem::Requirement
|
101
|
-
requirements:
|
102
|
-
- - ">="
|
103
|
-
- !ruby/object:Gem::Version
|
104
|
-
version: '0'
|
105
104
|
type: :development
|
105
|
+
requirement: *id006
|
106
|
+
- !ruby/object:Gem::Dependency
|
107
|
+
name: sqlite3
|
108
|
+
version_requirements: &id007 !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
110
|
+
requirements:
|
111
|
+
- - ">="
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
hash: 3
|
114
|
+
segments:
|
115
|
+
- 0
|
116
|
+
version: "0"
|
106
117
|
prerelease: false
|
107
|
-
version_requirements: !ruby/object:Gem::Requirement
|
108
|
-
requirements:
|
109
|
-
- - ">="
|
110
|
-
- !ruby/object:Gem::Version
|
111
|
-
version: '0'
|
112
|
-
- !ruby/object:Gem::Dependency
|
113
|
-
name: fakeweb
|
114
|
-
requirement: !ruby/object:Gem::Requirement
|
115
|
-
requirements:
|
116
|
-
- - ">="
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
version: '0'
|
119
118
|
type: :development
|
119
|
+
requirement: *id007
|
120
|
+
- !ruby/object:Gem::Dependency
|
121
|
+
name: fakeweb
|
122
|
+
version_requirements: &id008 !ruby/object:Gem::Requirement
|
123
|
+
none: false
|
124
|
+
requirements:
|
125
|
+
- - ">="
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
hash: 3
|
128
|
+
segments:
|
129
|
+
- 0
|
130
|
+
version: "0"
|
120
131
|
prerelease: false
|
121
|
-
version_requirements: !ruby/object:Gem::Requirement
|
122
|
-
requirements:
|
123
|
-
- - ">="
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: '0'
|
126
|
-
- !ruby/object:Gem::Dependency
|
127
|
-
name: strong_parameters
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
129
|
-
requirements:
|
130
|
-
- - ">="
|
131
|
-
- !ruby/object:Gem::Version
|
132
|
-
version: '0'
|
133
132
|
type: :development
|
133
|
+
requirement: *id008
|
134
|
+
- !ruby/object:Gem::Dependency
|
135
|
+
name: strong_parameters
|
136
|
+
version_requirements: &id009 !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ">="
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
hash: 3
|
142
|
+
segments:
|
143
|
+
- 0
|
144
|
+
version: "0"
|
134
145
|
prerelease: false
|
135
|
-
version_requirements: !ruby/object:Gem::Requirement
|
136
|
-
requirements:
|
137
|
-
- - ">="
|
138
|
-
- !ruby/object:Gem::Version
|
139
|
-
version: '0'
|
140
|
-
- !ruby/object:Gem::Dependency
|
141
|
-
name: coveralls
|
142
|
-
requirement: !ruby/object:Gem::Requirement
|
143
|
-
requirements:
|
144
|
-
- - ">="
|
145
|
-
- !ruby/object:Gem::Version
|
146
|
-
version: '0'
|
147
146
|
type: :development
|
147
|
+
requirement: *id009
|
148
|
+
- !ruby/object:Gem::Dependency
|
149
|
+
name: coveralls
|
150
|
+
version_requirements: &id010 !ruby/object:Gem::Requirement
|
151
|
+
none: false
|
152
|
+
requirements:
|
153
|
+
- - ">="
|
154
|
+
- !ruby/object:Gem::Version
|
155
|
+
hash: 3
|
156
|
+
segments:
|
157
|
+
- 0
|
158
|
+
version: "0"
|
148
159
|
prerelease: false
|
149
|
-
version_requirements: !ruby/object:Gem::Requirement
|
150
|
-
requirements:
|
151
|
-
- - ">="
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
version: '0'
|
154
|
-
- !ruby/object:Gem::Dependency
|
155
|
-
name: pry
|
156
|
-
requirement: !ruby/object:Gem::Requirement
|
157
|
-
requirements:
|
158
|
-
- - ">="
|
159
|
-
- !ruby/object:Gem::Version
|
160
|
-
version: '0'
|
161
160
|
type: :development
|
161
|
+
requirement: *id010
|
162
|
+
- !ruby/object:Gem::Dependency
|
163
|
+
name: pry
|
164
|
+
version_requirements: &id011 !ruby/object:Gem::Requirement
|
165
|
+
none: false
|
166
|
+
requirements:
|
167
|
+
- - ">="
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
hash: 3
|
170
|
+
segments:
|
171
|
+
- 0
|
172
|
+
version: "0"
|
162
173
|
prerelease: false
|
163
|
-
|
164
|
-
|
165
|
-
- - ">="
|
166
|
-
- !ruby/object:Gem::Version
|
167
|
-
version: '0'
|
174
|
+
type: :development
|
175
|
+
requirement: *id011
|
168
176
|
description: |-
|
169
177
|
Simple question/answer based spam protection for your Rails models.
|
170
178
|
You can define your own logic questions and/or fetch questions from the textcaptcha.com API.
|
171
179
|
The questions involve human logic and are tough for spam bots to crack.
|
172
180
|
For more reasons on why logic questions are a good idea visit; http://textcaptcha.com/why
|
173
|
-
email:
|
181
|
+
email:
|
174
182
|
- matt@hiddenloop.com
|
175
183
|
executables: []
|
184
|
+
|
176
185
|
extensions: []
|
177
|
-
|
186
|
+
|
187
|
+
extra_rdoc_files:
|
178
188
|
- README.rdoc
|
179
189
|
- LICENSE
|
180
|
-
files:
|
181
|
-
-
|
182
|
-
-
|
183
|
-
-
|
190
|
+
files:
|
191
|
+
- .coveralls.yml
|
192
|
+
- .gitignore
|
193
|
+
- .travis.yml
|
194
|
+
- CHANGELOG
|
184
195
|
- Gemfile
|
185
196
|
- LICENSE
|
186
197
|
- README.rdoc
|
@@ -191,7 +202,6 @@ files:
|
|
191
202
|
- init.rb
|
192
203
|
- lib/acts_as_textcaptcha.rb
|
193
204
|
- lib/acts_as_textcaptcha/framework/rails.rb
|
194
|
-
- lib/acts_as_textcaptcha/framework/rails2.rb
|
195
205
|
- lib/acts_as_textcaptcha/textcaptcha.rb
|
196
206
|
- lib/acts_as_textcaptcha/textcaptcha_api.rb
|
197
207
|
- lib/acts_as_textcaptcha/textcaptcha_cache.rb
|
@@ -207,26 +217,36 @@ files:
|
|
207
217
|
- test/textcaptcha_test.rb
|
208
218
|
homepage: http://github.com/matthutchinson/acts_as_textcaptcha
|
209
219
|
licenses: []
|
210
|
-
|
220
|
+
|
211
221
|
post_install_message:
|
212
222
|
rdoc_options: []
|
213
|
-
|
223
|
+
|
224
|
+
require_paths:
|
214
225
|
- lib
|
215
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
216
|
-
|
226
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
227
|
+
none: false
|
228
|
+
requirements:
|
217
229
|
- - ">="
|
218
|
-
- !ruby/object:Gem::Version
|
219
|
-
|
220
|
-
|
221
|
-
|
230
|
+
- !ruby/object:Gem::Version
|
231
|
+
hash: 3
|
232
|
+
segments:
|
233
|
+
- 0
|
234
|
+
version: "0"
|
235
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
236
|
+
none: false
|
237
|
+
requirements:
|
222
238
|
- - ">="
|
223
|
-
- !ruby/object:Gem::Version
|
224
|
-
|
239
|
+
- !ruby/object:Gem::Version
|
240
|
+
hash: 3
|
241
|
+
segments:
|
242
|
+
- 0
|
243
|
+
version: "0"
|
225
244
|
requirements: []
|
245
|
+
|
226
246
|
rubyforge_project:
|
227
|
-
rubygems_version:
|
247
|
+
rubygems_version: 1.8.25
|
228
248
|
signing_key:
|
229
|
-
specification_version:
|
230
|
-
summary: Spam protection for your models via logic questions and the textcaptcha.com
|
231
|
-
API
|
249
|
+
specification_version: 3
|
250
|
+
summary: Spam protection for your models via logic questions and the textcaptcha.com API
|
232
251
|
test_files: []
|
252
|
+
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: 98ad0396a537ab06e540f42880d1fcd24993f59c
|
4
|
-
data.tar.gz: 57ee900760402ed0cc2e22c609efe2d550b841c4
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: aa692657b0f23e1fc0410cfa5c8f996c6465148b09fa0f4ab17d47f1f1008b2db5fe3c42f5f2a777d729645589f6e5883d9dd25c7f03a49396e5de79ec20b1a4
|
7
|
-
data.tar.gz: 2e53ec3dc94736c4ccaeba1fa5670b6e79d0c74e8e191d25b8bf7e0643493293999253d05aa60b73176b8e44fc20d3f9e7ef901fe934ed9a7f274e83f079978d
|