mirror of
https://github.com/samsonjs/rack-attack.git
synced 2026-04-27 15:07:41 +00:00
Support Rack 3. (#586)
This commit is contained in:
parent
e039ecde2a
commit
b708de32f3
11 changed files with 39 additions and 8 deletions
1
.github/workflows/build.yml
vendored
1
.github/workflows/build.yml
vendored
|
|
@ -23,6 +23,7 @@ jobs:
|
||||||
- 2.6.10
|
- 2.6.10
|
||||||
- 2.5.8
|
- 2.5.8
|
||||||
gemfile:
|
gemfile:
|
||||||
|
- rack_3
|
||||||
- rack_2
|
- rack_2
|
||||||
- rack_1
|
- rack_1
|
||||||
- rails_7_0
|
- rails_7_0
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,9 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
appraise "rack_3" do
|
||||||
|
gem "rack", "~> 3.0"
|
||||||
|
end
|
||||||
|
|
||||||
appraise "rack_2" do
|
appraise "rack_2" do
|
||||||
gem "rack", "~> 2.0"
|
gem "rack", "~> 2.0"
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -3,5 +3,6 @@
|
||||||
source "https://rubygems.org"
|
source "https://rubygems.org"
|
||||||
|
|
||||||
gem "rack", "~> 2.0"
|
gem "rack", "~> 2.0"
|
||||||
|
gem "railties"
|
||||||
|
|
||||||
gemspec path: "../"
|
gemspec path: "../"
|
||||||
|
|
|
||||||
7
gemfiles/rack_3.gemfile
Normal file
7
gemfiles/rack_3.gemfile
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
# This file was generated by Appraisal
|
||||||
|
|
||||||
|
source "https://rubygems.org"
|
||||||
|
|
||||||
|
gem "rack", "~> 3.0"
|
||||||
|
|
||||||
|
gemspec path: "../"
|
||||||
|
|
@ -6,8 +6,14 @@ module Rack
|
||||||
attr_accessor :prefix
|
attr_accessor :prefix
|
||||||
attr_reader :last_epoch_time
|
attr_reader :last_epoch_time
|
||||||
|
|
||||||
def initialize
|
def self.default_store
|
||||||
self.store = ::Rails.cache if defined?(::Rails.cache)
|
if Object.const_defined?(:Rails) && Rails.respond_to?(:cache)
|
||||||
|
::Rails.cache
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def initialize(store: self.class.default_store)
|
||||||
|
self.store = store
|
||||||
@prefix = 'rack::attack'
|
@prefix = 'rack::attack'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,11 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
begin
|
||||||
|
require 'rails/railtie'
|
||||||
|
rescue LoadError
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
module Rack
|
module Rack
|
||||||
class Attack
|
class Attack
|
||||||
class Railtie < ::Rails::Railtie
|
class Railtie < ::Rails::Railtie
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ Gem::Specification.new do |s|
|
||||||
|
|
||||||
s.required_ruby_version = '>= 2.4'
|
s.required_ruby_version = '>= 2.4'
|
||||||
|
|
||||||
s.add_runtime_dependency 'rack', ">= 1.0", "< 3"
|
s.add_runtime_dependency 'rack', ">= 1.0", "< 4"
|
||||||
|
|
||||||
s.add_development_dependency 'appraisal', '~> 2.2'
|
s.add_development_dependency 'appraisal', '~> 2.2'
|
||||||
s.add_development_dependency "bundler", ">= 1.17", "< 3.0"
|
s.add_development_dependency "bundler", ">= 1.17", "< 3.0"
|
||||||
|
|
@ -46,5 +46,5 @@ Gem::Specification.new do |s|
|
||||||
s.add_development_dependency 'byebug', '~> 11.0'
|
s.add_development_dependency 'byebug', '~> 11.0'
|
||||||
end
|
end
|
||||||
|
|
||||||
s.add_development_dependency 'railties', '>= 4.2', '< 7.1'
|
s.add_development_dependency "activesupport"
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
|
|
||||||
require_relative "../spec_helper"
|
require_relative "../spec_helper"
|
||||||
|
|
||||||
if defined?(Rails)
|
if defined?(Rails::Application)
|
||||||
describe "Middleware for Rails" do
|
describe "Middleware for Rails" do
|
||||||
before do
|
before do
|
||||||
@app = Class.new(Rails::Application) do
|
@app = Class.new(Rails::Application) do
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
require_relative "spec_helper"
|
require_relative "spec_helper"
|
||||||
|
require 'active_support'
|
||||||
|
|
||||||
# ActiveSupport::Subscribers added in ~> 4.0.2.0
|
# ActiveSupport::Subscribers added in ~> 4.0.2.0
|
||||||
if ActiveSupport::VERSION::MAJOR > 3
|
if ActiveSupport::VERSION::MAJOR > 3
|
||||||
|
|
|
||||||
|
|
@ -11,6 +11,10 @@ describe 'Rack::Attack' do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'blocks requests with trailing slash' do
|
it 'blocks requests with trailing slash' do
|
||||||
|
if Rack::Attack::PathNormalizer == Rack::Attack::FallbackPathNormalizer
|
||||||
|
skip "Normalization is only present on Rails"
|
||||||
|
end
|
||||||
|
|
||||||
get '/foo/'
|
get '/foo/'
|
||||||
_(last_response.status).must_equal 403
|
_(last_response.status).must_equal 403
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,7 @@ require "bundler/setup"
|
||||||
require "minitest/autorun"
|
require "minitest/autorun"
|
||||||
require "minitest/pride"
|
require "minitest/pride"
|
||||||
require "rack/test"
|
require "rack/test"
|
||||||
require "rails"
|
require "active_support"
|
||||||
|
|
||||||
require "rack/attack"
|
require "rack/attack"
|
||||||
|
|
||||||
if RUBY_ENGINE == "ruby"
|
if RUBY_ENGINE == "ruby"
|
||||||
|
|
@ -29,7 +28,9 @@ class MiniTest::Spec
|
||||||
include Rack::Test::Methods
|
include Rack::Test::Methods
|
||||||
|
|
||||||
before do
|
before do
|
||||||
Rails.cache = nil
|
if Object.const_defined?(:Rails) && Rails.respond_to?(:cache)
|
||||||
|
Rails.cache.clear
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
after do
|
after do
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue