Skip to content

Commit 8d81255

Browse files
authored
Dropped ActiveSupport::Configurable. (#26)
Signed-off-by: Hermann Mayer <[email protected]>
1 parent 21c9f3e commit 8d81255

File tree

9 files changed

+51
-10
lines changed

9 files changed

+51
-10
lines changed

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
### next
22

3-
* Added support for Rails 8.1 (#25)
43
* Dropped Reek (#24)
4+
* Added support for Rails 8.1 (#25)
5+
* Switched from `ActiveSupport::Configurable` to a custom implementation based
6+
on `ActiveSupport::OrderedOptions` (#26)
57

68
### 3.0.0 (28 June 2025)
79

Gemfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ gemspec
1010
# Development dependencies
1111
gem 'appraisal', '~> 2.4'
1212
gem 'bundler', '~> 2.6'
13-
gem 'countless', '~> 2.0'
13+
gem 'countless', '~> 2.2'
1414
gem 'guard-rspec', '~> 4.7'
1515
gem 'rack', '~> 2.2'
1616
gem 'rack-test', '~> 2.0'

gemfiles/rails_7.1.gemfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ source "https://rubygems.org"
44

55
gem "appraisal", "~> 2.4"
66
gem "bundler", "~> 2.6"
7-
gem "countless", "~> 2.0"
7+
gem "countless", "~> 2.2"
88
gem "guard-rspec", "~> 4.7"
99
gem "rack", "~> 2.2"
1010
gem "rack-test", "~> 2.0"

gemfiles/rails_7.2.gemfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ source "https://rubygems.org"
44

55
gem "appraisal", "~> 2.4"
66
gem "bundler", "~> 2.6"
7-
gem "countless", "~> 2.0"
7+
gem "countless", "~> 2.2"
88
gem "guard-rspec", "~> 4.7"
99
gem "rack", "~> 2.2"
1010
gem "rack-test", "~> 2.0"

gemfiles/rails_8.0.gemfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ source "https://rubygems.org"
44

55
gem "appraisal", "~> 2.4"
66
gem "bundler", "~> 2.6"
7-
gem "countless", "~> 2.0"
7+
gem "countless", "~> 2.2"
88
gem "guard-rspec", "~> 4.7"
99
gem "rack", "~> 2.2"
1010
gem "rack-test", "~> 2.0"

gemfiles/rails_8.1.gemfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ source "https://rubygems.org"
44

55
gem "appraisal", "~> 2.4"
66
gem "bundler", "~> 2.6"
7-
gem "countless", "~> 2.0"
7+
gem "countless", "~> 2.2"
88
gem "guard-rspec", "~> 4.7"
99
gem "rack", "~> 2.2"
1010
gem "rack-test", "~> 2.0"

grape-jwt-authentication.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Gem::Specification.new do |spec|
3737
spec.add_dependency 'grape', '>= 1.0', '< 3.0'
3838
spec.add_dependency 'httparty', '>= 0.21'
3939
spec.add_dependency 'jwt', '~> 2.6'
40-
spec.add_dependency 'keyless', '~> 2.0'
40+
spec.add_dependency 'keyless', '~> 2.1'
4141
spec.add_dependency 'mutex_m', '>= 0.3'
4242
spec.add_dependency 'recursive-open-struct', '~> 2.0'
4343
spec.add_dependency 'zeitwerk', '~> 2.6'

lib/grape/jwt/authentication.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
require 'logger'
55
require 'active_support'
66
require 'active_support/concern'
7-
require 'active_support/configurable'
87
require 'active_support/cache'
8+
require 'active_support/ordered_options'
9+
require 'active_support/core_ext/class/attribute'
910
require 'active_support/core_ext/hash'
1011
require 'active_support/time'
1112
require 'active_support/time_with_zone'

lib/grape/jwt/authentication/configuration.rb

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,46 @@ module Grape
44
module Jwt
55
module Authentication
66
# The configuration for the Grape JWT authentication concern.
7-
class Configuration
8-
include ActiveSupport::Configurable
7+
class Configuration < ActiveSupport::OrderedOptions
8+
# Track our configurations settings (+Symbol+ keys) and their defaults
9+
# as lazy-loaded +Proc+'s values
10+
class_attribute :defaults,
11+
instance_reader: true,
12+
instance_writer: false,
13+
instance_predicate: false,
14+
default: {}
15+
16+
# Create a new +Configuration+ instance with all settings populated
17+
# with their respective defaults.
18+
#
19+
# @param args [Hash{Symbol => Mixed}] additional settings which
20+
# overwrite the defaults
21+
# @return [Configuration] the new configuration instance
22+
def initialize(**args)
23+
super()
24+
defaults.each { |key, default| self[key] = instance_exec(&default) }
25+
merge!(**args)
26+
end
27+
28+
# A simple DSL method to define new configuration accessors/settings
29+
# with their defaults. The defaults can be retrieved with
30+
# +Configuration.defaults+ or +Configuration.new.defaults+.
31+
#
32+
# @param name [Symbol, String] the name of the configuration
33+
# accessor/setting
34+
# @param default [Mixed, nil] a non-lazy-loaded static value, serving
35+
# as a default value for the setting
36+
# @param block [Proc] when given, the default value will be lazy-loaded
37+
# (result of the Proc)
38+
def self.config_accessor(name, default = nil, &block)
39+
# Save the given configuration accessor default value
40+
defaults[name.to_sym] = block || -> { default }
41+
42+
# Compile reader/writer methods so we don't have to go through
43+
# +ActiveSupport::OrderedOptions#method_missing+.
44+
define_method(name) { self[name] }
45+
define_method("#{name}=") { |value| self[name] = value }
46+
end
947

1048
# The authenticator function which must be defined by the user to
1149
# verify the given JSON Web Token. Here comes all your logic to lookup

0 commit comments

Comments
 (0)