humanizer 2.5.0 → 2.6.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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +6 -0
- data/README.md +34 -14
- data/lib/generators/templates/locales/nl.yml +5 -5
- data/lib/humanizer.rb +14 -2
- data/lib/humanizer/version.rb +1 -1
- metadata +18 -26
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 76a1854d099e40a3d8d1f57bb85e4e1fb8c65622
|
4
|
+
data.tar.gz: 8784e987a3785596f48f1e8b1239d45678230646
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ce6705809a1dd080f1cccfce7cef69cd4160658461c19c10932ff468aaae81ac86f1beae4aa8440813a6990bd4676ecfa54fb345391f572b26faaa66f35a512a
|
7
|
+
data.tar.gz: f8b2d3c1c53f1d11db73b325b07cf2ff105c1211321b0c773e3d6f83cbf5ef0d1e3a89441f0803da0d205a0bdc6bcbb793b0d9a42aea6b8f3e5f5c5e1d6a6af0
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
### Humanizer 2.6.0 (2013-11-25)
|
2
|
+
|
3
|
+
* Raise an exception of the translations are missing
|
4
|
+
* Make translation lookups work with both strings and symbols
|
5
|
+
* Improvements to the dutch translations
|
6
|
+
|
1
7
|
### Humanizer 2.5.0 (2013-09-10)
|
2
8
|
|
3
9
|
* Added translations: Greek and zh-TW
|
data/README.md
CHANGED
@@ -1,11 +1,21 @@
|
|
1
1
|
# Humanizer
|
2
2
|
|
3
|
-
Humanizer is a very simple CAPTCHA method. It has a localized YAML file with questions and answers which is used to validate that the user is an actual human. Any model that includes ActiveModel::Validations should work. Our aim is to be database and mapper agnostic, so if it doesn't work for you, open an issue. Humanizer
|
3
|
+
Humanizer is a very simple CAPTCHA method. It has a localized YAML file with questions and answers which is used to validate that the user is an actual human. Any model that includes ActiveModel::Validations should work. Our aim is to be database and mapper agnostic, so if it doesn't work for you, open an issue. Humanizer works with Rails 3 and 4.
|
4
4
|
|
5
5
|
## Installation
|
6
6
|
|
7
|
-
|
8
|
-
|
7
|
+
Add `humanizer` to your Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'humanizer'
|
11
|
+
```
|
12
|
+
|
13
|
+
Bundle and run the generator in terminal:
|
14
|
+
|
15
|
+
```sh
|
16
|
+
bundle
|
17
|
+
rails g humanizer
|
18
|
+
```
|
9
19
|
|
10
20
|
## Advanced Installation
|
11
21
|
|
@@ -17,19 +27,25 @@ Humanizer is a very simple CAPTCHA method. It has a localized YAML file with que
|
|
17
27
|
|
18
28
|
1. In your model, include Humanizer and add the #require_human_on method, example:
|
19
29
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
30
|
+
```ruby
|
31
|
+
class User < ActiveRecord::Base
|
32
|
+
include Humanizer
|
33
|
+
require_human_on :create
|
34
|
+
end
|
35
|
+
```
|
24
36
|
|
25
37
|
2. Ask the question in the form, example:
|
26
38
|
|
27
|
-
|
28
|
-
|
29
|
-
|
39
|
+
```erb
|
40
|
+
<%= f.label :humanizer_answer, @model.humanizer_question %>
|
41
|
+
<%= f.text_field :humanizer_answer %>
|
42
|
+
<%= f.hidden_field :humanizer_question_id %>
|
43
|
+
```
|
30
44
|
|
31
45
|
3. If you are using attr_accessible, remember to whitelist `:humanizer_answer` and `:humanizer_question_id`.
|
32
46
|
|
47
|
+
4. If you are using strong_parameters, remember to permit `:humanizer_answer` and `:humanizer_question_id`.
|
48
|
+
|
33
49
|
## Configuration
|
34
50
|
|
35
51
|
Default translations can be found in config/locales/
|
@@ -42,8 +58,10 @@ You might want to skip the humanizer validations on your tests or rails console.
|
|
42
58
|
|
43
59
|
You can just have a simple attribute on your model and use it to bypass the validation. Here's an example:
|
44
60
|
|
45
|
-
|
46
|
-
|
61
|
+
```ruby
|
62
|
+
attr_accessor :bypass_humanizer
|
63
|
+
require_human_on :create, :unless => :bypass_humanizer
|
64
|
+
```
|
47
65
|
|
48
66
|
Now when bypass_humanizer is true, validation will be skipped.
|
49
67
|
|
@@ -53,8 +71,10 @@ In case you want to give your users the option to change the question, there's a
|
|
53
71
|
|
54
72
|
To make sure the current question doesn't get asked again, you can pass the current question id to the method. For example:
|
55
73
|
|
56
|
-
|
57
|
-
|
74
|
+
```ruby
|
75
|
+
@user.change_humanizer_question(params[:user][:humanizer_question_id])
|
76
|
+
```
|
77
|
+
|
58
78
|
## Live sites
|
59
79
|
|
60
80
|
* [ArcticStartup.com](http://arcticstartup.com/) - sign up form
|
@@ -13,9 +13,9 @@ nl:
|
|
13
13
|
answers: ["10", "tien"]
|
14
14
|
- question: "Vul het volgende nummer in deze rij aan: 10, 11, 12, 13, 14, .."
|
15
15
|
answers: ["15", "vijftien"]
|
16
|
-
- question: "Wat is vijf
|
16
|
+
- question: "Wat is vijf maal vijf?"
|
17
17
|
answers: ["25", "vijfentwintig"]
|
18
|
-
- question: "
|
18
|
+
- question: "Tien gedeeld door twee is hoeveel?"
|
19
19
|
answers: ["5", "vijf"]
|
20
20
|
- question: Welke dag komt er na maandag?
|
21
21
|
answer: "dinsdag"
|
@@ -23,11 +23,11 @@ nl:
|
|
23
23
|
answer: "december"
|
24
24
|
- question: Hoeveel minuten zitten er in een uur?
|
25
25
|
answers: ["60", "zestig"]
|
26
|
-
- question: Wat is het
|
26
|
+
- question: Wat is het tegenovergestelde van beneden?
|
27
27
|
answer: "boven"
|
28
|
-
- question: Wat is het
|
28
|
+
- question: Wat is het tegenovergestelde van zuid?
|
29
29
|
answer: ["noord", "noorden"]
|
30
|
-
- question: Wat is het
|
30
|
+
- question: Wat is het tegenovergestelde van slecht?
|
31
31
|
answer: "goed"
|
32
32
|
- question: Hoeveel is 4 maal vier?
|
33
33
|
answers: ["16", "zestien"]
|
data/lib/humanizer.rb
CHANGED
@@ -26,9 +26,21 @@ module Humanizer
|
|
26
26
|
end
|
27
27
|
|
28
28
|
private
|
29
|
-
|
29
|
+
|
30
30
|
def humanizer_questions
|
31
|
-
@humanizer_questions ||=
|
31
|
+
@humanizer_questions ||= begin
|
32
|
+
questions = I18n.translate!("humanizer.questions")
|
33
|
+
# Poor man's HashWithIndifferentAccess
|
34
|
+
questions.map do |question|
|
35
|
+
question.default_proc = proc do |h, k|
|
36
|
+
case k
|
37
|
+
when String then sym = k.to_sym; h[sym] if h.key?(sym)
|
38
|
+
when Symbol then str = k.to_s; h[str] if h.key?(str)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
questions
|
43
|
+
end
|
32
44
|
end
|
33
45
|
|
34
46
|
def humanizer_question_ids
|
data/lib/humanizer/version.rb
CHANGED
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: humanizer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
5
|
-
prerelease:
|
4
|
+
version: 2.6.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Antti Akonniemi
|
@@ -10,70 +9,62 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date: 2013-
|
12
|
+
date: 2013-11-25 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: bundler
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
|
-
- -
|
18
|
+
- - '>='
|
21
19
|
- !ruby/object:Gem::Version
|
22
20
|
version: '0'
|
23
21
|
type: :development
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
|
-
- -
|
25
|
+
- - '>='
|
29
26
|
- !ruby/object:Gem::Version
|
30
27
|
version: '0'
|
31
28
|
- !ruby/object:Gem::Dependency
|
32
29
|
name: rake
|
33
30
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
31
|
requirements:
|
36
|
-
- -
|
32
|
+
- - '>='
|
37
33
|
- !ruby/object:Gem::Version
|
38
34
|
version: '0'
|
39
35
|
type: :development
|
40
36
|
prerelease: false
|
41
37
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
38
|
requirements:
|
44
|
-
- -
|
39
|
+
- - '>='
|
45
40
|
- !ruby/object:Gem::Version
|
46
41
|
version: '0'
|
47
42
|
- !ruby/object:Gem::Dependency
|
48
43
|
name: rspec
|
49
44
|
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
45
|
requirements:
|
52
46
|
- - ~>
|
53
47
|
- !ruby/object:Gem::Version
|
54
|
-
version: 2.
|
48
|
+
version: 2.14.0
|
55
49
|
type: :development
|
56
50
|
prerelease: false
|
57
51
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
52
|
requirements:
|
60
53
|
- - ~>
|
61
54
|
- !ruby/object:Gem::Version
|
62
|
-
version: 2.
|
55
|
+
version: 2.14.0
|
63
56
|
- !ruby/object:Gem::Dependency
|
64
57
|
name: activemodel
|
65
58
|
requirement: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
59
|
requirements:
|
68
|
-
- -
|
60
|
+
- - '>='
|
69
61
|
- !ruby/object:Gem::Version
|
70
62
|
version: 3.0.0
|
71
63
|
type: :development
|
72
64
|
prerelease: false
|
73
65
|
version_requirements: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
66
|
requirements:
|
76
|
-
- -
|
67
|
+
- - '>='
|
77
68
|
- !ruby/object:Gem::Version
|
78
69
|
version: 3.0.0
|
79
70
|
description: reCAPTCHA was too much for us, so we created this. Simplest captcha ever.
|
@@ -105,27 +96,28 @@ files:
|
|
105
96
|
- lib/generators/templates/locales/zh-CN.yml
|
106
97
|
- lib/generators/templates/locales/zh-TW.yml
|
107
98
|
homepage: http://github.com/kiskolabs/humanizer
|
108
|
-
licenses:
|
99
|
+
licenses:
|
100
|
+
- MIT
|
101
|
+
metadata: {}
|
109
102
|
post_install_message:
|
110
103
|
rdoc_options: []
|
111
104
|
require_paths:
|
112
105
|
- lib
|
113
106
|
required_ruby_version: !ruby/object:Gem::Requirement
|
114
|
-
none: false
|
115
107
|
requirements:
|
116
|
-
- -
|
108
|
+
- - '>='
|
117
109
|
- !ruby/object:Gem::Version
|
118
110
|
version: '0'
|
119
111
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
|
-
none: false
|
121
112
|
requirements:
|
122
|
-
- -
|
113
|
+
- - '>='
|
123
114
|
- !ruby/object:Gem::Version
|
124
115
|
version: 1.3.6
|
125
116
|
requirements: []
|
126
117
|
rubyforge_project: humanizer
|
127
|
-
rubygems_version:
|
118
|
+
rubygems_version: 2.0.6
|
128
119
|
signing_key:
|
129
|
-
specification_version:
|
120
|
+
specification_version: 4
|
130
121
|
summary: A really simple captcha solution
|
131
122
|
test_files: []
|
123
|
+
has_rdoc:
|