mirror of
https://github.com/samsonjs/rack-attack.git
synced 2026-03-25 09:25:49 +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.5.8
|
||||
gemfile:
|
||||
- rack_3
|
||||
- rack_2
|
||||
- rack_1
|
||||
- rails_7_0
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
appraise "rack_3" do
|
||||
gem "rack", "~> 3.0"
|
||||
end
|
||||
|
||||
appraise "rack_2" do
|
||||
gem "rack", "~> 2.0"
|
||||
end
|
||||
|
|
|
|||
|
|
@ -3,5 +3,6 @@
|
|||
source "https://rubygems.org"
|
||||
|
||||
gem "rack", "~> 2.0"
|
||||
gem "railties"
|
||||
|
||||
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_reader :last_epoch_time
|
||||
|
||||
def initialize
|
||||
self.store = ::Rails.cache if defined?(::Rails.cache)
|
||||
def self.default_store
|
||||
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'
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,11 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
begin
|
||||
require 'rails/railtie'
|
||||
rescue LoadError
|
||||
return
|
||||
end
|
||||
|
||||
module Rack
|
||||
class Attack
|
||||
class Railtie < ::Rails::Railtie
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ Gem::Specification.new do |s|
|
|||
|
||||
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 "bundler", ">= 1.17", "< 3.0"
|
||||
|
|
@ -46,5 +46,5 @@ Gem::Specification.new do |s|
|
|||
s.add_development_dependency 'byebug', '~> 11.0'
|
||||
end
|
||||
|
||||
s.add_development_dependency 'railties', '>= 4.2', '< 7.1'
|
||||
s.add_development_dependency "activesupport"
|
||||
end
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
require_relative "../spec_helper"
|
||||
|
||||
if defined?(Rails)
|
||||
if defined?(Rails::Application)
|
||||
describe "Middleware for Rails" do
|
||||
before do
|
||||
@app = Class.new(Rails::Application) do
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
require_relative "spec_helper"
|
||||
require 'active_support'
|
||||
|
||||
# ActiveSupport::Subscribers added in ~> 4.0.2.0
|
||||
if ActiveSupport::VERSION::MAJOR > 3
|
||||
|
|
|
|||
|
|
@ -11,6 +11,10 @@ describe 'Rack::Attack' do
|
|||
end
|
||||
|
||||
it 'blocks requests with trailing slash' do
|
||||
if Rack::Attack::PathNormalizer == Rack::Attack::FallbackPathNormalizer
|
||||
skip "Normalization is only present on Rails"
|
||||
end
|
||||
|
||||
get '/foo/'
|
||||
_(last_response.status).must_equal 403
|
||||
end
|
||||
|
|
|
|||
|
|
@ -5,8 +5,7 @@ require "bundler/setup"
|
|||
require "minitest/autorun"
|
||||
require "minitest/pride"
|
||||
require "rack/test"
|
||||
require "rails"
|
||||
|
||||
require "active_support"
|
||||
require "rack/attack"
|
||||
|
||||
if RUBY_ENGINE == "ruby"
|
||||
|
|
@ -29,7 +28,9 @@ class MiniTest::Spec
|
|||
include Rack::Test::Methods
|
||||
|
||||
before do
|
||||
Rails.cache = nil
|
||||
if Object.const_defined?(:Rails) && Rails.respond_to?(:cache)
|
||||
Rails.cache.clear
|
||||
end
|
||||
end
|
||||
|
||||
after do
|
||||
|
|
|
|||
Loading…
Reference in a new issue