acts_as_textcaptcha 4.5.2 → 4.7.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2e756b5583199fa18a33fa9ca992d48acebffd43d290948a5fa5b857fddb6f2d
4
- data.tar.gz: 31ed6774f374b928be23b38b725c37d7bb5a163af6522d4e6365ba99be573cd5
3
+ metadata.gz: 97a85cf9e199655854243a2a751cd00e4c9c8b45b19eb6ae0b14293b7c1964b2
4
+ data.tar.gz: a26d0dbfb3a8a6a278099879f432ea2928a4add8388ba818421aaa665482f463
5
5
  SHA512:
6
- metadata.gz: 77b9415ca1476acbf17f839675d6d97371fe3641d5512be3aed86d058acfbde2e4a41bc73a2c6be370c34f963b70ff0e2468f8393326a108d4c458bbe87cfc62
7
- data.tar.gz: c6309e86be034e61672ad0193d39657c2bf21a2a5bcd9e714cbcc91bb5ab4d0fc397dfa57542ff50604a5b8a1383f1b74613702d6f348bca849eba6f999967df
6
+ metadata.gz: f5756a2a22abc5bceae0a7303cb2f1a13213307d4b02a8e00cc8704ee372e16758f583da250e309858ff52bb4421559cba099459f95c2de2bb41c65813dee17b
7
+ data.tar.gz: 88acda928cfd9789e5d9334ef2644b2449066024f9f3e6f0e4c2b90ca343e6c298f06f9c82921c8be408a1eb4a187fbdd95811538c640a3b56aa7266366b2b61
@@ -0,0 +1,40 @@
1
+ name: Tests
2
+
3
+ on:
4
+ push:
5
+ branches: [ "main" ]
6
+ pull_request:
7
+ branches: [ "main" ]
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ test:
14
+ strategy:
15
+ matrix:
16
+ ruby-version:
17
+ - "3.1"
18
+ - "3.2"
19
+ - "3.3"
20
+ - "3.4"
21
+ gemfile:
22
+ - Gemfile
23
+ - gemfiles/rails_6.gemfile
24
+ exclude:
25
+ - ruby-version: "3.4"
26
+ gemfile: gemfiles/rails_6.gemfile
27
+ runs-on: ubuntu-latest
28
+ name: ${{ format('Tests (Ruby {0})', matrix.ruby-version) }}
29
+ continue-on-error: true
30
+ env:
31
+ BUNDLE_GEMFILE: ${{ github.workspace }}/${{ matrix.gemfile }}
32
+ steps:
33
+ - uses: actions/checkout@v4
34
+ - name: Set up Ruby
35
+ uses: ruby/setup-ruby@v1
36
+ with:
37
+ ruby-version: ${{ matrix.ruby-version }}
38
+ bundler-cache: true
39
+ - name: Run tests
40
+ run: bundle exec rake
@@ -0,0 +1,25 @@
1
+ name: Publish gem to RubyGems.org
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - v*
7
+
8
+ jobs:
9
+ push:
10
+ name: Push gem to RubyGems.org
11
+ runs-on: ubuntu-latest
12
+
13
+ permissions:
14
+ id-token: write
15
+ contents: write
16
+
17
+ steps:
18
+ - uses: actions/checkout@v4
19
+ - name: Set up Ruby
20
+ uses: ruby/setup-ruby@v1
21
+ with:
22
+ bundler-cache: true
23
+ ruby-version: ruby
24
+
25
+ - uses: rubygems/release-gem@v1
data/Appraisals CHANGED
@@ -1,14 +1,7 @@
1
- appraise "rails-4" do
2
- gem "rails", "4.2.11.3"
3
- gem "sqlite3", "~> 1.3.5"
4
- end
5
-
6
- appraise "rails-5" do
7
- gem "rails", "5.2.4.4"
8
- gem "sqlite3", "~> 1.4.2"
1
+ appraise "rails-6" do
2
+ gem "rails", "6.1.7.8"
9
3
  end
10
4
 
11
- appraise "rails-6" do
12
- gem "rails", "6.0.3.4"
13
- gem "sqlite3", "~> 1.4.2"
5
+ appraise "rails-7" do
6
+ gem "rails", "7.2.0"
14
7
  end
data/CHANGELOG.md CHANGED
@@ -9,6 +9,18 @@ adheres to [Semantic Versioning][Semver].
9
9
 
10
10
  - Your contribution here!
11
11
 
12
+ ## [4.7.0] - 2024-10-03
13
+ ### Changed
14
+ - CI covers Latest Rails version 7, 6 and Ruby 3.1 -> 3.4
15
+ - Removed Apprasial
16
+ - Added GH workflow
17
+ - Dropped rubocop, simplecov
18
+
19
+ ## [4.6.0] - 2022-02-14
20
+ ### Changed
21
+ - CI covers Latest Rails version 7 and Ruby 3.1
22
+ - Use `YAML.safe_load` and allow aliases
23
+
12
24
  ## [4.5.2] - 2021-01-28
13
25
  ### Changed
14
26
  - CI covers Latest Rails version 6,5,4 and Ruby 3,2.7,2.6,2.5
@@ -95,7 +107,9 @@ adheres to [Semantic Versioning][Semver].
95
107
  - README updated.
96
108
  - Test coverage improved.
97
109
 
98
- [Unreleased]: https://github.com/matthutchinson/acts_as_textcaptcha/compare/v4.5.2...HEAD
110
+ [Unreleased]: https://github.com/matthutchinson/acts_as_textcaptcha/compare/v4.7.0...HEAD
111
+ [4.7.0]: https://github.com/matthutchinson/acts_as_textcaptcha/compare/v4.6.0...v4.7.0
112
+ [4.6.0]: https://github.com/matthutchinson/acts_as_textcaptcha/compare/v4.5.2...v4.6.0
99
113
  [4.5.2]: https://github.com/matthutchinson/acts_as_textcaptcha/compare/v4.5.1...v4.5.2
100
114
  [4.5.1]: https://github.com/matthutchinson/acts_as_textcaptcha/compare/v4.5.0...v4.5.1
101
115
  [4.5.0]: https://github.com/matthutchinson/acts_as_textcaptcha/compare/v4.4.1...v4.5.0
data/README.md CHANGED
@@ -1,10 +1,8 @@
1
1
  ## ActAsTextcaptcha
2
2
 
3
+ [![Build](https://img.shields.io/github/actions/workflow/status/matthutchinson/acts_as_textcaptcha/build.yml?branch=main&style=flat)](https://github.com/matthutchinson/acts_as_textcaptcha/actions/workflows/build.yml)
3
4
  [![Gem](https://img.shields.io/gem/v/acts_as_textcaptcha.svg?style=flat)](http://rubygems.org/gems/acts_as_textcaptcha)
4
- [![Travis](https://img.shields.io/travis/com/matthutchinson/acts_as_textcaptcha/master.svg?style=flat)](https://travis-ci.com/matthutchinson/acts_as_textcaptcha)
5
5
  [![Depfu](https://img.shields.io/depfu/matthutchinson/acts_as_textcaptcha.svg?style=flat)](https://depfu.com/github/matthutchinson/acts_as_textcaptcha)
6
- [![Maintainability](https://api.codeclimate.com/v1/badges/c67969dd7b921477bdcc/maintainability)](https://codeclimate.com/github/matthutchinson/acts_as_textcaptcha/maintainability)
7
- [![Test Coverage](https://api.codeclimate.com/v1/badges/c67969dd7b921477bdcc/test_coverage)](https://codeclimate.com/github/matthutchinson/acts_as_textcaptcha/test_coverage)
8
6
 
9
7
  ActsAsTextcaptcha provides spam protection for Rails models with text-based
10
8
  logic question captchas. Questions are fetched from [Rob
@@ -18,16 +16,13 @@ are a good idea visit [textcaptcha.com](https://textcaptcha.com).
18
16
 
19
17
  ## Requirements
20
18
 
21
- * [Ruby](http://ruby-lang.org/) >= 2.5
22
- * [Rails](http://github.com/rails/rails) >= 4
19
+ * [Ruby](http://ruby-lang.org/) >= 3.1
20
+ * [Rails](http://github.com/rails/rails) >= 6.1
23
21
  * A valid [Rails.cache](http://guides.rubyonrails.org/caching_with_rails.html#cache-stores) (not `:null_store`)
24
22
 
25
23
  ## Demo
26
24
 
27
- Try a [working demo here](https://acts-as-textcaptcha-demo.herokuapp.com)!
28
- Or one-click deploy your own [demo app](https://github.com/matthutchinson/acts_as_textcaptcha_demo) to Heroku.
29
-
30
- [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://www.heroku.com/deploy?template=https://github.com/matthutchinson/acts_as_textcaptcha_demo/tree/master)
25
+ Try a [working demo here](https://acts-as-textcaptcha.hiddenloop.dev)!
31
26
 
32
27
  ## Installation
33
28
 
@@ -59,7 +54,26 @@ def new
59
54
  end
60
55
  ```
61
56
 
62
- Add the question and answer fields to your form using the
57
+ Make sure these textcaptcha params
58
+ (`:textcaptcha_answer, :textcaptcha_key`) are permitted in your create (or update) action:
59
+
60
+ ```ruby
61
+ def create
62
+ @comment = Comment.create(commment_params)
63
+ # ... etc
64
+ end
65
+
66
+ private
67
+
68
+ def commment_params
69
+ params.require(:comment).permit(:textcaptcha_answer, :textcaptcha_key, :name, :comment_text)
70
+ end
71
+ ```
72
+
73
+ **NOTE**: if the captcha is submitted incorrectly, a new captcha will be
74
+ automatically generated on the `@comment` object.
75
+
76
+ Next, add the question and answer fields to your form using the
63
77
  `textcaptcha_fields` helper. Arrange the HTML within this block as you like.
64
78
 
65
79
  ```ruby
@@ -79,12 +93,11 @@ Finally set a valid [cache
79
93
  store](https://guides.rubyonrails.org/caching_with_rails.html#cache-stores) (not `:null_store`) for your environments:
80
94
 
81
95
  ```ruby
82
- # e.g. in each config/environments/*.rb
96
+ # e.g. in config/environments/*.rb
83
97
  config.cache_store = :memory_store
84
98
  ```
85
99
 
86
- You can run `rails dev:cache` on a modern generated Rails app to enable
87
- a memory store cache in the development environment.
100
+ You can run `rails dev:cache` on to enable a memory store cache in the development environment.
88
101
 
89
102
  ## Configuration
90
103
 
@@ -192,8 +205,7 @@ The API may be unresponsive or return an unexpected response. If you've set
192
205
  ## Development
193
206
 
194
207
  Check out this repo and run `bin/setup`, this will install gem dependencies and
195
- generate docs. Use `bundle exec rake` to run tests and generate a coverage
196
- report.
208
+ generate docs. Use `bundle exec rake` to run tests.
197
209
 
198
210
  You can also run `bin/console` for an interactive prompt to experiment with the
199
211
  code.
@@ -239,10 +251,11 @@ Covenant](http://contributor-covenant.org) code of conduct. See
239
251
  [here](https://github.com/matthutchinson/acts_as_textcaptcha/blob/master/CODE_OF_CONDUCT.md)
240
252
  for more details.
241
253
 
242
- ## Todo
254
+ ## Ideas
243
255
 
256
+ * Check if AI models can beat this approach
244
257
  * Allow translatable user supplied questions and answers in config
245
- * Allow `Net::HTTP` to be swapped out for any another HTTP client.
258
+ * Allow `Net::HTTP` to be swapped out for any HTTP client.
246
259
 
247
260
  ## License
248
261
 
@@ -256,10 +269,8 @@ The code is available as open source under the terms of
256
269
 
257
270
  ## Links
258
271
 
259
- * [Demo](https://acts-as-textcaptcha-demo.herokuapp.com)
260
- * [Travis CI](http://travis-ci.com/matthutchinson/acts_as_textcaptcha)
261
- * [Maintainability](https://codeclimate.com/github/matthutchinson/acts_as_textcaptcha/maintainability)
262
- * [Test Coverage](https://codeclimate.com/github/matthutchinson/acts_as_textcaptcha/test_coverage)
272
+ * [CI](https://github.com/matthutchinson/acts_as_textcaptcha/actions/workflows/build.yml)
273
+ * [Demo](https://acts-as-textcaptcha.hiddenloop.dev)
263
274
  * [RDoc](http://rdoc.info/projects/matthutchinson/acts_as_textcaptcha)
264
275
  * [Wiki](http://wiki.github.com/matthutchinson/acts_as_textcaptcha/)
265
276
  * [Issues](http://github.com/matthutchinson/acts_as_textcaptcha/issues)
data/Rakefile CHANGED
@@ -3,7 +3,6 @@
3
3
  require "bundler/gem_tasks"
4
4
  require "rake/testtask"
5
5
  require "rdoc/task"
6
- require "rubocop/rake_task"
7
6
 
8
7
  # generate docs
9
8
  RDoc::Task.new do |rd|
@@ -21,19 +20,4 @@ Rake::TestTask.new(:test) do |t|
21
20
  t.test_files = FileList["test/**/*_test.rb"]
22
21
  end
23
22
 
24
- # run lint
25
- RuboCop::RakeTask.new(:rubocop) do |t|
26
- t.options = ["--display-cop-names"]
27
- end
28
-
29
- # run tests with code coverage (default)
30
- namespace :test do
31
- desc "Run all tests and features and generate a code coverage report"
32
- task :coverage do
33
- ENV["COVERAGE"] = "true"
34
- Rake::Task["test"].execute
35
- Rake::Task["rubocop"].execute
36
- end
37
- end
38
-
39
- task default: [:rubocop, "test:coverage"]
23
+ task default: ["test"]
@@ -25,11 +25,11 @@ Gem::Specification.new do |spec|
25
25
  "changelog_uri" => "https://github.com/matthutchinson/acts_as_textcaptcha/blob/master/CHANGELOG.md",
26
26
  "source_code_uri" => "https://github.com/matthutchinson/acts_as_textcaptcha",
27
27
  "bug_tracker_uri" => "https://github.com/matthutchinson/acts_as_textcaptcha/issues",
28
- "allowed_push_host" => "https://rubygems.org"
28
+ "allowed_push_host" => "https://rubygems.org",
29
+ "rubygems_mfa_required" => "true"
29
30
  }
30
31
 
31
32
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
32
- spec.test_files = `git ls-files -- {test}/*`.split("\n")
33
33
  spec.bindir = "bin"
34
34
  spec.require_paths = ["lib"]
35
35
 
@@ -38,24 +38,18 @@ Gem::Specification.new do |spec|
38
38
  spec.rdoc_options << "--title" << "ActAsTextcaptcha" << "--main" << "README.md" << "-ri"
39
39
 
40
40
  # non-gem dependecies
41
- spec.required_ruby_version = ">= 2.5"
41
+ spec.required_ruby_version = ">= 3.1"
42
42
 
43
43
  # dev gems
44
44
  spec.add_development_dependency("bundler")
45
- spec.add_development_dependency("pry-byebug")
46
45
  spec.add_development_dependency "rake"
47
46
 
48
- # Lint
49
- spec.add_development_dependency("rubocop")
50
-
51
47
  # docs
52
48
  spec.add_development_dependency("rdoc")
53
49
 
54
50
  # testing
55
- spec.add_development_dependency("appraisal")
51
+ spec.add_development_dependency("rails", "~> 7.2")
56
52
  spec.add_development_dependency("minitest")
57
- spec.add_development_dependency("rails", "~> 6.0.3.4")
58
- spec.add_development_dependency("simplecov", "~> 0.19.1")
59
53
  spec.add_development_dependency("sqlite3")
60
54
  spec.add_development_dependency("webmock")
61
55
  end
@@ -1,8 +1,6 @@
1
- # This file was generated by Appraisal
2
-
3
1
  source "https://rubygems.org"
4
2
 
5
- gem "rails", "6.1.1"
6
- gem "sqlite3", "~> 1.4.2"
3
+ gem "rails", "6.1.7.8"
4
+ gem "sqlite3", "1.4.2"
7
5
 
8
6
  gemspec path: "../"
@@ -122,17 +122,15 @@ module ActsAsTextcaptcha
122
122
 
123
123
  private
124
124
 
125
- # rubocop:disable Security/YAMLLoad
126
125
  def build_textcaptcha_config(options)
127
126
  if options.is_a?(Hash)
128
127
  options
129
128
  else
130
- YAML.load(ERB.new(read_textcaptcha_config).result)[Rails.env]
129
+ YAML.safe_load(ERB.new(read_textcaptcha_config).result, aliases: true)[Rails.env]
131
130
  end
132
131
  rescue StandardError
133
132
  raise ArgumentError, "could not find any textcaptcha options, in config/textcaptcha.yml or model - run rake textcaptcha:config to generate a template config file"
134
133
  end
135
- # rubocop:enable Security/YAMLLoad
136
134
 
137
135
  def read_textcaptcha_config
138
136
  File.read("#{Rails.root || "."}/config/textcaptcha.yml")
@@ -7,11 +7,8 @@ module ActsAsTextcaptcha
7
7
  BASE_URL = "http://textcaptcha.com"
8
8
 
9
9
  def initialize(api_key: nil, api_endpoint: nil, raise_errors: false)
10
- self.uri = if api_endpoint
11
- URI(api_endpoint)
12
- else
13
- URI("#{BASE_URL}/#{api_key}.json")
14
- end
10
+ self.uri = URI(api_endpoint || "#{BASE_URL}/#{api_key}.json")
11
+
15
12
  self.raise_errors = raise_errors || false
16
13
  rescue URI::InvalidURIError => e
17
14
  raise ApiKeyError.new(api_key, e)
@@ -41,7 +41,7 @@ module ActsAsTextcaptcha
41
41
 
42
42
  def self.create(path: "./config/textcaptcha.yml")
43
43
  FileUtils.mkdir_p(File.dirname(path))
44
- File.open(path, "w") { |f| f.write(YAML) }
44
+ File.write(path, YAML)
45
45
  end
46
46
  end
47
47
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActsAsTextcaptcha
4
- VERSION = "4.5.2"
4
+ VERSION = "4.7.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_textcaptcha
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.5.2
4
+ version: 4.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Hutchinson
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-28 00:00:00.000000000 Z
11
+ date: 2024-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -24,20 +24,6 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: pry-byebug
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
27
  - !ruby/object:Gem::Dependency
42
28
  name: rake
43
29
  requirement: !ruby/object:Gem::Requirement
@@ -52,20 +38,6 @@ dependencies:
52
38
  - - ">="
53
39
  - !ruby/object:Gem::Version
54
40
  version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rubocop
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
41
  - !ruby/object:Gem::Dependency
70
42
  name: rdoc
71
43
  requirement: !ruby/object:Gem::Requirement
@@ -81,19 +53,19 @@ dependencies:
81
53
  - !ruby/object:Gem::Version
82
54
  version: '0'
83
55
  - !ruby/object:Gem::Dependency
84
- name: appraisal
56
+ name: rails
85
57
  requirement: !ruby/object:Gem::Requirement
86
58
  requirements:
87
- - - ">="
59
+ - - "~>"
88
60
  - !ruby/object:Gem::Version
89
- version: '0'
61
+ version: '7.2'
90
62
  type: :development
91
63
  prerelease: false
92
64
  version_requirements: !ruby/object:Gem::Requirement
93
65
  requirements:
94
- - - ">="
66
+ - - "~>"
95
67
  - !ruby/object:Gem::Version
96
- version: '0'
68
+ version: '7.2'
97
69
  - !ruby/object:Gem::Dependency
98
70
  name: minitest
99
71
  requirement: !ruby/object:Gem::Requirement
@@ -108,34 +80,6 @@ dependencies:
108
80
  - - ">="
109
81
  - !ruby/object:Gem::Version
110
82
  version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: rails
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: 6.0.3.4
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: 6.0.3.4
125
- - !ruby/object:Gem::Dependency
126
- name: simplecov
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: 0.19.1
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: 0.19.1
139
83
  - !ruby/object:Gem::Dependency
140
84
  name: sqlite3
141
85
  requirement: !ruby/object:Gem::Requirement
@@ -177,10 +121,10 @@ extra_rdoc_files:
177
121
  - README.md
178
122
  - LICENSE
179
123
  files:
124
+ - ".github/workflows/build.yml"
125
+ - ".github/workflows/push_gem.yml"
180
126
  - ".gitignore"
181
- - ".rubocop.yml"
182
127
  - ".simplecov"
183
- - ".travis.yml"
184
128
  - Appraisals
185
129
  - CHANGELOG.md
186
130
  - CODE_OF_CONDUCT.md
@@ -193,9 +137,6 @@ files:
193
137
  - acts_as_textcaptcha.gemspec
194
138
  - bin/console
195
139
  - bin/setup
196
- - gemfiles/rails_3.gemfile
197
- - gemfiles/rails_4.gemfile
198
- - gemfiles/rails_5.gemfile
199
140
  - gemfiles/rails_6.gemfile
200
141
  - lib/acts_as_textcaptcha.rb
201
142
  - lib/acts_as_textcaptcha/errors.rb
@@ -217,7 +158,8 @@ metadata:
217
158
  source_code_uri: https://github.com/matthutchinson/acts_as_textcaptcha
218
159
  bug_tracker_uri: https://github.com/matthutchinson/acts_as_textcaptcha/issues
219
160
  allowed_push_host: https://rubygems.org
220
- post_install_message:
161
+ rubygems_mfa_required: 'true'
162
+ post_install_message:
221
163
  rdoc_options:
222
164
  - "--title"
223
165
  - ActAsTextcaptcha
@@ -230,15 +172,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
230
172
  requirements:
231
173
  - - ">="
232
174
  - !ruby/object:Gem::Version
233
- version: '2.5'
175
+ version: '3.1'
234
176
  required_rubygems_version: !ruby/object:Gem::Requirement
235
177
  requirements:
236
178
  - - ">="
237
179
  - !ruby/object:Gem::Version
238
180
  version: '0'
239
181
  requirements: []
240
- rubygems_version: 3.2.3
241
- signing_key:
182
+ rubygems_version: 3.5.16
183
+ signing_key:
242
184
  specification_version: 4
243
185
  summary: A text-based logic question captcha for Rails
244
186
  test_files: []