bp3-action_dispatch 0.1.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 047dba7391fc721276bd28109306b4f84184ca61e158d7e89e696ad7f33112de
4
+ data.tar.gz: 6610136da8131e6a4f913d6006819e0151f0dd24b60417ca0d2ecce80c28c20f
5
+ SHA512:
6
+ metadata.gz: 4423575ece656cef98475b38f1c578a7df724bff9d1c93f791ac9bf32c5b440b1a21b45d38ad722c924623588c0869cb1ffcf3e508d2a521aa0783577a397990
7
+ data.tar.gz: b239fc0dc12751cf90ab0c18b8153b740b3445b8e3ac382ea90f8ae46751bf351c0d8d421684c175b2bcc95bc423765139b6c09e03b264492e1a562213782c4e
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,51 @@
1
+ require:
2
+ - rubocop-rake
3
+ - rubocop-rspec
4
+ - rubocop-capybara
5
+ - rubocop-factory_bot
6
+
7
+ AllCops:
8
+ TargetRubyVersion: 3.2.2
9
+ NewCops: enable
10
+
11
+ Gemspec/DevelopmentDependencies:
12
+ EnforcedStyle: gemspec
13
+
14
+ Lint/ConstantDefinitionInBlock:
15
+ Exclude:
16
+ - lib/bp3/**/railtie.rb
17
+
18
+ Lint/Void:
19
+ Exclude:
20
+ - lib/bp3/**/railtie.rb
21
+
22
+ Metrics/AbcSize:
23
+ Max: 26
24
+
25
+ Metrics/BlockLength:
26
+ Max: 66
27
+
28
+ Metrics/CyclomaticComplexity:
29
+ Max: 10
30
+
31
+ Metrics/MethodLength:
32
+ Max: 15
33
+
34
+ Metrics/ModuleLength:
35
+ Max: 150
36
+
37
+ Metrics/PerceivedComplexity:
38
+ Max: 10
39
+
40
+ Naming/FileName:
41
+ Exclude:
42
+ - lib/bp3-*.rb
43
+
44
+ RSpec/ExampleLength:
45
+ Max: 10
46
+
47
+ RSpec/MultipleExpectations:
48
+ Max: 4
49
+
50
+ Style/Documentation:
51
+ Enabled: false
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-3.2.2
data/.yardopts ADDED
@@ -0,0 +1,8 @@
1
+ --charset utf-8
2
+ --readme README.md
3
+ --markup markdown
4
+ --title "bp3-action_dispatch"
5
+ --private
6
+ -
7
+ CHANGELOG.md
8
+ LICENSE.txt
data/CHANGELOG.md ADDED
@@ -0,0 +1,9 @@
1
+ ## [Unreleased]
2
+
3
+ ## [0.1.1] - 2024-05-30
4
+
5
+ - Tweaks and documentation
6
+
7
+ ## [0.1.0] - 2023-12-18
8
+
9
+ - Initial release
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ source 'https://rubygems.org'
4
+
5
+ # Specify your gem's dependencies in bp3-action_dispatch.gemspec
6
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,141 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ bp3-action_dispatch (0.1.1)
5
+ actionpack (>= 7.1.2, < 8)
6
+ activesupport (>= 7.1.2, < 8)
7
+ i18n (>= 1.8.11, < 2)
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ actionpack (7.1.3.3)
13
+ actionview (= 7.1.3.3)
14
+ activesupport (= 7.1.3.3)
15
+ nokogiri (>= 1.8.5)
16
+ racc
17
+ rack (>= 2.2.4)
18
+ rack-session (>= 1.0.1)
19
+ rack-test (>= 0.6.3)
20
+ rails-dom-testing (~> 2.2)
21
+ rails-html-sanitizer (~> 1.6)
22
+ actionview (7.1.3.3)
23
+ activesupport (= 7.1.3.3)
24
+ builder (~> 3.1)
25
+ erubi (~> 1.11)
26
+ rails-dom-testing (~> 2.2)
27
+ rails-html-sanitizer (~> 1.6)
28
+ activesupport (7.1.3.3)
29
+ base64
30
+ bigdecimal
31
+ concurrent-ruby (~> 1.0, >= 1.0.2)
32
+ connection_pool (>= 2.2.5)
33
+ drb
34
+ i18n (>= 1.6, < 2)
35
+ minitest (>= 5.1)
36
+ mutex_m
37
+ tzinfo (~> 2.0)
38
+ ast (2.4.2)
39
+ base64 (0.2.0)
40
+ bigdecimal (3.1.8)
41
+ builder (3.2.4)
42
+ byebug (11.1.3)
43
+ concurrent-ruby (1.3.1)
44
+ connection_pool (2.4.1)
45
+ crass (1.0.6)
46
+ diff-lcs (1.5.1)
47
+ drb (2.2.1)
48
+ erubi (1.12.0)
49
+ i18n (1.14.5)
50
+ concurrent-ruby (~> 1.0)
51
+ json (2.7.2)
52
+ language_server-protocol (3.17.0.3)
53
+ loofah (2.22.0)
54
+ crass (~> 1.0.2)
55
+ nokogiri (>= 1.12.0)
56
+ minitest (5.23.1)
57
+ mutex_m (0.2.0)
58
+ nokogiri (1.16.5-x86_64-darwin)
59
+ racc (~> 1.4)
60
+ parallel (1.24.0)
61
+ parser (3.3.2.0)
62
+ ast (~> 2.4.1)
63
+ racc
64
+ racc (1.8.0)
65
+ rack (3.0.11)
66
+ rack-session (2.0.0)
67
+ rack (>= 3.0.0)
68
+ rack-test (2.1.0)
69
+ rack (>= 1.3)
70
+ rails-dom-testing (2.2.0)
71
+ activesupport (>= 5.0.0)
72
+ minitest
73
+ nokogiri (>= 1.6)
74
+ rails-html-sanitizer (1.6.0)
75
+ loofah (~> 2.21)
76
+ nokogiri (~> 1.14)
77
+ rainbow (3.1.1)
78
+ rake (13.2.1)
79
+ regexp_parser (2.9.2)
80
+ rexml (3.2.8)
81
+ strscan (>= 3.0.9)
82
+ rspec (3.13.0)
83
+ rspec-core (~> 3.13.0)
84
+ rspec-expectations (~> 3.13.0)
85
+ rspec-mocks (~> 3.13.0)
86
+ rspec-core (3.13.0)
87
+ rspec-support (~> 3.13.0)
88
+ rspec-expectations (3.13.0)
89
+ diff-lcs (>= 1.2.0, < 2.0)
90
+ rspec-support (~> 3.13.0)
91
+ rspec-mocks (3.13.1)
92
+ diff-lcs (>= 1.2.0, < 2.0)
93
+ rspec-support (~> 3.13.0)
94
+ rspec-support (3.13.1)
95
+ rubocop (1.64.0)
96
+ json (~> 2.3)
97
+ language_server-protocol (>= 3.17.0)
98
+ parallel (~> 1.10)
99
+ parser (>= 3.3.0.2)
100
+ rainbow (>= 2.2.2, < 4.0)
101
+ regexp_parser (>= 1.8, < 3.0)
102
+ rexml (>= 3.2.5, < 4.0)
103
+ rubocop-ast (>= 1.31.1, < 2.0)
104
+ ruby-progressbar (~> 1.7)
105
+ unicode-display_width (>= 2.4.0, < 3.0)
106
+ rubocop-ast (1.31.3)
107
+ parser (>= 3.3.1.0)
108
+ rubocop-capybara (2.20.0)
109
+ rubocop (~> 1.41)
110
+ rubocop-factory_bot (2.25.1)
111
+ rubocop (~> 1.41)
112
+ rubocop-rake (0.6.0)
113
+ rubocop (~> 1.0)
114
+ rubocop-rspec (2.29.2)
115
+ rubocop (~> 1.40)
116
+ rubocop-capybara (~> 2.17)
117
+ rubocop-factory_bot (~> 2.22)
118
+ rubocop-rspec_rails (~> 2.28)
119
+ rubocop-rspec_rails (2.28.3)
120
+ rubocop (~> 1.40)
121
+ ruby-progressbar (1.13.0)
122
+ strscan (3.1.0)
123
+ tzinfo (2.0.6)
124
+ concurrent-ruby (~> 1.0)
125
+ unicode-display_width (2.5.0)
126
+
127
+ PLATFORMS
128
+ x86_64-darwin-21
129
+ x86_64-darwin-22
130
+
131
+ DEPENDENCIES
132
+ bp3-action_dispatch!
133
+ byebug
134
+ rake (~> 13.0)
135
+ rspec (~> 3.0)
136
+ rubocop (~> 1.21)
137
+ rubocop-rake (~> 0.6)
138
+ rubocop-rspec (~> 2.25)
139
+
140
+ BUNDLED WITH
141
+ 2.3.7
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2023-2024 Wim den Braven
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,48 @@
1
+ # Bp3::ActionDispatch
2
+
3
+ bp3-action_dispatch adapts ActionDispatch::Request for BP3, the persuavis/black_phoebe_3
4
+ multi-site multi-tenant rails application.
5
+
6
+ ## Installation
7
+
8
+ Add this line to your application's Gemfile:
9
+
10
+ ```ruby
11
+ gem 'bp3-action_dispatch'
12
+ ```
13
+
14
+ And then execute:
15
+
16
+ $ bundle install
17
+
18
+ Or install it yourself as:
19
+
20
+ $ gem install bp3-action_dispatch
21
+
22
+ ## Usage
23
+
24
+ In your application's `config/initializers/bp3-action_dispatch`, specify the name of the class representing a site:
25
+ ```ruby
26
+ Bp3::ActionDispatch.site_class_name = 'Sites::Site'
27
+ ```
28
+
29
+ ## Development
30
+
31
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec`
32
+ to run the tests. You can also run `bin/console` for an interactive prompt that will allow
33
+ you to experiment.
34
+
35
+ To install this gem onto your local machine, run `rake install`. To release a
36
+ new version, update the version number in `version.rb`, and then run `rake release`,
37
+ which will create a git tag for the version, push git commits and the created tag, and push
38
+ the `.gem` file to [rubygems.org](https://rubygems.org).
39
+
40
+ ## Testing
41
+ Run `rake` to run rspec tests and rubocop linting.
42
+
43
+ ## Documentation
44
+ A `.yardopts` file is provided to support yard documentation.
45
+
46
+ ## License
47
+
48
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
5
+
6
+ RSpec::Core::RakeTask.new(:spec)
7
+
8
+ require 'rubocop/rake_task'
9
+
10
+ RuboCop::RakeTask.new
11
+
12
+ task default: %i[spec rubocop]
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'lib/bp3/action_dispatch/version'
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'bp3-action_dispatch'
7
+ spec.version = Bp3::ActionDispatch::VERSION
8
+ spec.authors = ['Wim den Braven']
9
+ spec.email = ['wimdenbraven@persuavis.com']
10
+
11
+ spec.summary = 'bp3-action_dispatch adapts ActionDispatch::Request for BP3 (persuavis/black_phoebe_3).'
12
+ # spec.description = "TODO: Write a longer description or delete this line."
13
+ spec.homepage = 'https://www.black-phoebe.com'
14
+ spec.license = 'MIT'
15
+ spec.required_ruby_version = '>= 3.2.0'
16
+
17
+ spec.metadata['allowed_push_host'] = 'https://rubygems.org'
18
+
19
+ spec.metadata['homepage_uri'] = spec.homepage
20
+ spec.metadata['source_code_uri'] = 'https://github.com/persuavis/bp3-action_dispatch'
21
+ spec.metadata['changelog_uri'] = 'https://github.com/persuavis/bp3-action_dispatch/blob/main/CHANGELOG.md'
22
+
23
+ # Specify which files should be added to the gem when it is released.
24
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
25
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
26
+ `git ls-files -z`.split("\x0").reject do |f|
27
+ (f == __FILE__) || f.match(%r{\A(?:(?:bin|test|spec|features)/|\.(?:git|travis|circleci)|appveyor)})
28
+ end
29
+ end
30
+ spec.bindir = 'exe'
31
+ spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
32
+ spec.require_paths = ['lib']
33
+
34
+ spec.add_dependency 'actionpack', ['>= 7.1.2', '< 8']
35
+ spec.add_dependency 'activesupport', ['>= 7.1.2', '< 8']
36
+ spec.add_dependency 'i18n', ['>= 1.8.11', '< 2']
37
+
38
+ spec.add_development_dependency 'byebug'
39
+ spec.add_development_dependency 'rake', '~> 13.0'
40
+ spec.add_development_dependency 'rspec', '~> 3.0'
41
+ spec.add_development_dependency 'rubocop', '~> 1.21'
42
+ spec.add_development_dependency 'rubocop-rake', '~> 0.6'
43
+ spec.add_development_dependency 'rubocop-rspec', '~> 2.25'
44
+
45
+ # For more information and examples about making a new gem, check out our
46
+ # guide at: https://bundler.io/guides/creating_gem.html
47
+ spec.metadata['rubygems_mfa_required'] = 'true'
48
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bp3
4
+ module ActionDispatch
5
+ if defined?(Rails.env)
6
+ class Railtie < Rails::Railtie
7
+ initializer 'bp3.action_dispatch.railtie.register' do |app|
8
+ app.config.after_initialize do
9
+ ::ActionDispatch::Request # preload
10
+ module ::ActionDispatch
11
+ class Request
12
+ include Bp3::ActionDispatch::RequestHost
13
+ include Bp3::ActionDispatch::RequestSite
14
+ include Bp3::ActionDispatch::RequestLocale
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bp3
4
+ module ActionDispatch
5
+ module RequestHost
6
+ def normalized_host
7
+ return host if valid_host?(host)
8
+ return forwarded_host if valid_host?(forwarded_host)
9
+
10
+ host
11
+ end
12
+
13
+ private
14
+
15
+ def forwarded_host
16
+ @forwarded_host ||= env['X-Forwarded-Host']
17
+ end
18
+
19
+ def valid_host?(host)
20
+ host.present? && !ip_address?(host)
21
+ end
22
+
23
+ def ip_address?(host)
24
+ return false if host.blank?
25
+ return true if Resolv::IPv4::Regex.match?(host)
26
+ return true if Resolv::IPv6::Regex.match?(host)
27
+
28
+ false
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,90 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bp3
4
+ module ActionDispatch
5
+ module RequestLocale
6
+ def request_locale
7
+ @request_locale ||= extract_locale
8
+ end
9
+
10
+ private
11
+
12
+ def extract_locale
13
+ extract_locale_from_path ||
14
+ extract_locale_from_params ||
15
+ extract_locale_from_host ||
16
+ extract_locale_from_header ||
17
+ extract_locale_from_setting
18
+ end
19
+
20
+ def extract_locale_from_path
21
+ locale = original_fullpath.split('/')[original_fullpath.starts_with?('/') ? 1 : 0]
22
+ locale = locale_if_exists(locale)
23
+ @locale_from = 'path' if locale
24
+ locale
25
+ end
26
+
27
+ def extract_locale_from_params
28
+ return nil if params[:locale].blank?
29
+
30
+ locale = params[:locale]
31
+ locale = locale_if_exists(locale)
32
+ @locale_from = 'params' if locale
33
+ locale
34
+ end
35
+
36
+ def extract_locale_from_host
37
+ locale = locale_if_exists(host.split('.').last)
38
+ @locale_from = 'host' if locale
39
+ locale
40
+ end
41
+
42
+ def extract_locale_from_header
43
+ header = env['HTTP_ACCEPT_LANGUAGE']
44
+ return if header.blank?
45
+
46
+ languages = parse_header(header)
47
+ sorted = languages.sort_by { |_l, q| q }.reverse
48
+ locales = sorted.map(&:first)
49
+ symbolized = locales.map { |l| locale_to_sym(l) }
50
+ available = symbolized.select { |l| I18n.available_locales.include?(l) }
51
+ locale = available.first
52
+ @locale_from = 'header' if locale
53
+ locale
54
+ end
55
+
56
+ def extract_locale_from_setting
57
+ return if request_site&.config.nil?
58
+
59
+ locale = locale_if_exists(request_site.configs.locale.presence)
60
+ @locale_from = 'setting' if locale
61
+ locale
62
+ end
63
+
64
+ # example format: 'en;q=0.1,nl'
65
+ def parse_header(header)
66
+ languages = header.split(',').map(&:strip)
67
+ languages.map do |language|
68
+ locale, quality = language.split(/\s*;\s*q\s*=\s*/i)
69
+ quality = quality.blank? ? 1.0 : quality.to_f
70
+ [locale, quality]
71
+ end
72
+ end
73
+
74
+ def locale_if_exists(locale)
75
+ locale = locale_to_sym(locale)
76
+ I18n.available_locales.include?(locale) ? locale : nil
77
+ end
78
+
79
+ def locale_to_sym(locale)
80
+ return nil if locale.nil?
81
+ return locale.to_sym if locale.length == 2
82
+
83
+ locale, region = locale.split('-')
84
+ return locale.to_sym if region.nil?
85
+
86
+ :"#{locale}-#{region.upcase}"
87
+ end
88
+ end
89
+ end
90
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bp3
4
+ module ActionDispatch
5
+ module RequestSite
6
+ def request_site
7
+ @request_site ||= Bp3::ActionDispatch.site_class.find_host(normalized_host)
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bp3
4
+ module ActionDispatch
5
+ VERSION = '0.1.1'
6
+ end
7
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support/core_ext/module/attribute_accessors'
4
+ require 'active_support/inflector'
5
+
6
+ require_relative 'action_dispatch/request_host'
7
+ require_relative 'action_dispatch/request_locale'
8
+ require_relative 'action_dispatch/request_site'
9
+ require_relative 'action_dispatch/railtie'
10
+ require_relative 'action_dispatch/version'
11
+
12
+ module Bp3
13
+ module ActionDispatch
14
+ mattr_accessor :site_class_name
15
+
16
+ def self.site_class
17
+ @@site_class ||= site_class_name.constantize # rubocop:disable Style/ClassVars
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bp3/action_dispatch'
@@ -0,0 +1,6 @@
1
+ module Bp3
2
+ module ActionDispatch
3
+ VERSION: String
4
+ # See the writing guide of rbs: https://github.com/ruby/rbs#guides
5
+ end
6
+ end
metadata ADDED
@@ -0,0 +1,211 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: bp3-action_dispatch
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Wim den Braven
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2024-05-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: actionpack
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 7.1.2
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '8'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 7.1.2
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '8'
33
+ - !ruby/object:Gem::Dependency
34
+ name: activesupport
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: 7.1.2
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '8'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: 7.1.2
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '8'
53
+ - !ruby/object:Gem::Dependency
54
+ name: i18n
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: 1.8.11
60
+ - - "<"
61
+ - !ruby/object:Gem::Version
62
+ version: '2'
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 1.8.11
70
+ - - "<"
71
+ - !ruby/object:Gem::Version
72
+ version: '2'
73
+ - !ruby/object:Gem::Dependency
74
+ name: byebug
75
+ requirement: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ type: :development
81
+ prerelease: false
82
+ version_requirements: !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: '0'
87
+ - !ruby/object:Gem::Dependency
88
+ name: rake
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "~>"
92
+ - !ruby/object:Gem::Version
93
+ version: '13.0'
94
+ type: :development
95
+ prerelease: false
96
+ version_requirements: !ruby/object:Gem::Requirement
97
+ requirements:
98
+ - - "~>"
99
+ - !ruby/object:Gem::Version
100
+ version: '13.0'
101
+ - !ruby/object:Gem::Dependency
102
+ name: rspec
103
+ requirement: !ruby/object:Gem::Requirement
104
+ requirements:
105
+ - - "~>"
106
+ - !ruby/object:Gem::Version
107
+ version: '3.0'
108
+ type: :development
109
+ prerelease: false
110
+ version_requirements: !ruby/object:Gem::Requirement
111
+ requirements:
112
+ - - "~>"
113
+ - !ruby/object:Gem::Version
114
+ version: '3.0'
115
+ - !ruby/object:Gem::Dependency
116
+ name: rubocop
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - "~>"
120
+ - !ruby/object:Gem::Version
121
+ version: '1.21'
122
+ type: :development
123
+ prerelease: false
124
+ version_requirements: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - "~>"
127
+ - !ruby/object:Gem::Version
128
+ version: '1.21'
129
+ - !ruby/object:Gem::Dependency
130
+ name: rubocop-rake
131
+ requirement: !ruby/object:Gem::Requirement
132
+ requirements:
133
+ - - "~>"
134
+ - !ruby/object:Gem::Version
135
+ version: '0.6'
136
+ type: :development
137
+ prerelease: false
138
+ version_requirements: !ruby/object:Gem::Requirement
139
+ requirements:
140
+ - - "~>"
141
+ - !ruby/object:Gem::Version
142
+ version: '0.6'
143
+ - !ruby/object:Gem::Dependency
144
+ name: rubocop-rspec
145
+ requirement: !ruby/object:Gem::Requirement
146
+ requirements:
147
+ - - "~>"
148
+ - !ruby/object:Gem::Version
149
+ version: '2.25'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - "~>"
155
+ - !ruby/object:Gem::Version
156
+ version: '2.25'
157
+ description:
158
+ email:
159
+ - wimdenbraven@persuavis.com
160
+ executables: []
161
+ extensions: []
162
+ extra_rdoc_files: []
163
+ files:
164
+ - ".rspec"
165
+ - ".rubocop.yml"
166
+ - ".ruby-version"
167
+ - ".yardopts"
168
+ - CHANGELOG.md
169
+ - Gemfile
170
+ - Gemfile.lock
171
+ - LICENSE.txt
172
+ - README.md
173
+ - Rakefile
174
+ - bp3-action_dispatch.gemspec
175
+ - lib/bp3-action_dispatch.rb
176
+ - lib/bp3/action_dispatch.rb
177
+ - lib/bp3/action_dispatch/railtie.rb
178
+ - lib/bp3/action_dispatch/request_host.rb
179
+ - lib/bp3/action_dispatch/request_locale.rb
180
+ - lib/bp3/action_dispatch/request_site.rb
181
+ - lib/bp3/action_dispatch/version.rb
182
+ - sig/bp3/action_dispatch.rbs
183
+ homepage: https://www.black-phoebe.com
184
+ licenses:
185
+ - MIT
186
+ metadata:
187
+ allowed_push_host: https://rubygems.org
188
+ homepage_uri: https://www.black-phoebe.com
189
+ source_code_uri: https://github.com/persuavis/bp3-action_dispatch
190
+ changelog_uri: https://github.com/persuavis/bp3-action_dispatch/blob/main/CHANGELOG.md
191
+ rubygems_mfa_required: 'true'
192
+ post_install_message:
193
+ rdoc_options: []
194
+ require_paths:
195
+ - lib
196
+ required_ruby_version: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ version: 3.2.0
201
+ required_rubygems_version: !ruby/object:Gem::Requirement
202
+ requirements:
203
+ - - ">="
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
206
+ requirements: []
207
+ rubygems_version: 3.5.11
208
+ signing_key:
209
+ specification_version: 4
210
+ summary: bp3-action_dispatch adapts ActionDispatch::Request for BP3 (persuavis/black_phoebe_3).
211
+ test_files: []