humanizer 2.7.0 → 2.7.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b268345d6d2c138180c0524c04609775fa7bbd52741661fd4b23879be4eb6c9a
4
- data.tar.gz: 9eb10255a421623d61b2ce64e9ec47674ad6409285db530362f75d56e66850c5
3
+ metadata.gz: df124f5def849dfe6dcfa45fc2916568e2d05a7f7250c499136cc1aa8fa27fcf
4
+ data.tar.gz: 00aded9be9984c9efd2ae3196841f27559e17b833f5fd8cd3b6de88473c451df
5
5
  SHA512:
6
- metadata.gz: be4b6b44404226559c6a0e44fa97200408cfb40560e12d818bd6e79d6dbda8704acdb8dd7bca243fc0dfb6c3ccb970bad3ac6ed5057d0b1a523e8d795b555144
7
- data.tar.gz: b5644e9aec6361012880742613db454a691c6b2fa0bd7eb7844565490c4c2d0d4104588e3a9237201ef720dfb5b4e8e67383adb459f530eeb0592b5502e5a171
6
+ metadata.gz: 06f1ebf7066bebe4c2abf355a8f4efb4cbf6cfc8dde621b55a59b35e5e6d037ff04cfd9b19988741755d95902be47bb7caa39c035ddf9e010e5cc92efa481cfd
7
+ data.tar.gz: 5089521d758905893cbd21a054d6b14e7247098e03d725b124801f77b12d37396541270d29aa9b7d49b8e4f0496d82e89b6aa01b1b34c1423f7c5bbd4a83ce51
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ ### Humanizer 2.7.1 (2024-12-19)
2
+
3
+ * Adds HumanizerHelper class for use cases when developers don't have a class they want to include Humanizer on(basic contact form for example)
4
+
1
5
  ### Humanizer 2.6.4 (2017-07-07)
2
6
 
3
7
  * Prevents NoMethodError when form posts non-existing question id
data/README.md CHANGED
@@ -1,13 +1,13 @@
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 works with Rails 3–7.
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
7
  Add `humanizer` to your Gemfile:
8
8
 
9
9
  ```ruby
10
- gem "humanizer"
10
+ gem 'humanizer'
11
11
  ```
12
12
 
13
13
  Bundle and run the generator in terminal:
@@ -46,6 +46,44 @@ end
46
46
 
47
47
  4. If you are using strong_parameters, remember to permit `:humanizer_answer` and `:humanizer_question_id`.
48
48
 
49
+ ## Usage without a model
50
+
51
+ Alternatively, you many use the built in HumanizerHelper class instead of using your own model (useful for something like a contact form if you don't have a model/class for this). Behavior is the same including `Humanizer` on a model, but all setters are available as optional arguments when initializing a HumanizerHelper instance.
52
+
53
+ 1. Example initialization code(controller):
54
+
55
+ ```ruby
56
+ @humanizer_helper = HumanizerHelper.new
57
+ ```
58
+
59
+ 2. Example rails form usage:
60
+
61
+ ```erb
62
+ <%= label_tag :humanizer_answer, @humanizer_helper.humanizer_question %>
63
+ <%= text_field_tag :humanizer_answer %>
64
+ <%= hidden_field_tag :humanizer_question_id, @humanizer_helper.humanizer_question_id %>
65
+ ```
66
+
67
+ 3. Example response handling:
68
+
69
+ ```ruby
70
+ humanizer_helper = HumanizerHelper.new(humanizer_answer: params[:humanizer_answer], humanizer_question_id: params[:humanizer_question_id])
71
+ if humanizer_helper.humanizer_correct_answer?
72
+ do_stuff
73
+ end
74
+ ```
75
+
76
+ ## Testing
77
+
78
+ A HumanizerHelper instance provides an additional `get_correct_humanizer_answer` method to make testing easier. Example:
79
+
80
+ ```ruby
81
+ question_id = find('#humanizer_question_id', visible: false).value #gets humanizer question id from example form above
82
+ humanizer_helper = HumanizerHelper.new(humanizer_question_id: question_id)
83
+ fill_in 'humanizer_answer', with: humanizer_helper.get_correct_humanizer_answer #fills in answer field from example above with the correct answer
84
+ ```
85
+
86
+
49
87
  ## Configuration
50
88
 
51
89
  Default translations can be found in config/locales/
@@ -60,7 +98,7 @@ You can just have a simple attribute on your model and use it to bypass the vali
60
98
 
61
99
  ```ruby
62
100
  attr_accessor :bypass_humanizer
63
- require_human_on :create, unless: :bypass_humanizer
101
+ require_human_on :create, :unless => :bypass_humanizer
64
102
  ```
65
103
 
66
104
  Now when bypass_humanizer is true, validation will be skipped.
@@ -75,6 +113,11 @@ To make sure the current question doesn't get asked again, you can pass the curr
75
113
  @user.change_humanizer_question(params[:user][:humanizer_question_id])
76
114
  ```
77
115
 
116
+ ## Live sites
117
+
118
+ * [ArcticStartup.com](http://arcticstartup.com/) - sign up form
119
+ * [Paspartout](http://paspartout.com/) - sign up form
120
+
78
121
  ## License
79
122
 
80
123
  Humanizer is licensed under the MIT License, for more details see the LICENSE file.
@@ -97,6 +140,7 @@ Humanizer is licensed under the MIT License, for more details see the LICENSE fi
97
140
  * [seogrady](https://github.com/seogrady)
98
141
  * [yairgo](https://github.com/yairgo)
99
142
  * [woto](https://github.com/woto)
143
+ * [Calvin Delamere](https://github.com/elbartostrikesagain)
100
144
 
101
145
  ## CI Build Status
102
146
 
@@ -1,3 +1,3 @@
1
1
  module Humanizer
2
- VERSION = "2.7.0"
2
+ VERSION = "2.7.1"
3
3
  end
data/lib/humanizer.rb CHANGED
@@ -30,16 +30,14 @@ module Humanizer
30
30
  def humanizer_questions
31
31
  @humanizer_questions ||= begin
32
32
  questions = I18n.translate!("humanizer.questions")
33
- # Poor man's HashWithIndifferentAccess
33
+ # Create new mutable copies of the questions with indifferent access
34
34
  questions.map do |question|
35
- config = Hash.new
36
- config.default_proc = proc do |h, k|
37
- case k
38
- when String then sym = k.to_sym; h[sym] if h.key?(sym)
39
- when Symbol then str = k.to_s; h[str] if h.key?(str)
40
- end
35
+ new_hash = {}
36
+ question.each do |k, v|
37
+ new_hash[k.to_s] = v # Store everything with string keys
38
+ new_hash[k.to_sym] = v # Store everything with symbol keys
41
39
  end
42
- config.merge(question)
40
+ new_hash
43
41
  end
44
42
  end
45
43
  end
@@ -0,0 +1,17 @@
1
+ class HumanizerHelper
2
+ include ActiveModel::Validations
3
+ include Humanizer
4
+
5
+ def initialize(options={})
6
+ options[:humanizer_question_id] = options[:humanizer_question_id].to_i unless options[:humanizer_question_id].nil?
7
+ options.each do |k, v|
8
+ self.send("#{k}=", v)
9
+ end
10
+
11
+ humanizer_question_id
12
+ end
13
+
14
+ def get_correct_humanizer_answer
15
+ humanizer_answers_for_id(humanizer_question_id.to_i)[0]
16
+ end
17
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: humanizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.7.0
4
+ version: 2.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Antti Akonniemi
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2023-06-19 00:00:00.000000000 Z
14
+ date: 2024-12-19 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
@@ -82,7 +82,6 @@ files:
82
82
  - CHANGELOG.md
83
83
  - LICENSE
84
84
  - README.md
85
- - bin/rake
86
85
  - lib/generators/humanizer_generator.rb
87
86
  - lib/generators/templates/locales/da.yml
88
87
  - lib/generators/templates/locales/de.yml
@@ -105,6 +104,7 @@ files:
105
104
  - lib/generators/templates/locales/zh-TW.yml
106
105
  - lib/humanizer.rb
107
106
  - lib/humanizer/version.rb
107
+ - lib/humanizer_helper.rb
108
108
  homepage: http://github.com/kiskolabs/humanizer
109
109
  licenses:
110
110
  - MIT
@@ -124,7 +124,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
124
124
  - !ruby/object:Gem::Version
125
125
  version: 1.3.6
126
126
  requirements: []
127
- rubygems_version: 3.1.2
127
+ rubygems_version: 3.5.16
128
128
  signing_key:
129
129
  specification_version: 4
130
130
  summary: A really simple captcha solution
data/bin/rake DELETED
@@ -1,29 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- #
5
- # This file was generated by Bundler.
6
- #
7
- # The application 'rake' is installed as part of a gem, and
8
- # this file is here to facilitate running it.
9
- #
10
-
11
- require "pathname"
12
- ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile",
13
- Pathname.new(__FILE__).realpath)
14
-
15
- bundle_binstub = File.expand_path("../bundle", __FILE__)
16
-
17
- if File.file?(bundle_binstub)
18
- if File.read(bundle_binstub, 300) =~ /This file was generated by Bundler/
19
- load(bundle_binstub)
20
- else
21
- abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
22
- Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
23
- end
24
- end
25
-
26
- require "rubygems"
27
- require "bundler/setup"
28
-
29
- load Gem.bin_path("rake", "rake")