cloudflare-rails 2.4.0 → 3.0.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: 11110e82a65bdac6452690a323d9f7b834ec61d224dce3584d59244ae5150240
4
- data.tar.gz: cbbd90760e1966e42d0ae0e59526228686222a0b2381deb3d41680d4e05d227e
3
+ metadata.gz: 9f6d6411a565dbb86d9a6c07ac4d54d081111e2cb8ba879fcc212923cbea7697
4
+ data.tar.gz: 2c7104876a1415d654d71e073c58b973ea4d3391fa91ff40d9381b6fdd300d79
5
5
  SHA512:
6
- metadata.gz: 55dad9534a826670be89601a3404d420535b92e42639e44a001e2f869711c3e7347b2d810ef00967d5f51f680e0517d0c856aa26c1caff8531988722fef00910
7
- data.tar.gz: 45000db30d0f95515c7d69a4295a4f69d68b2285c638a24b4f1d30b79c53aa5940beb861b7dcc9c2cc75183ab039baaedc34f84510c5455abf7b68d46cc76379
6
+ metadata.gz: c94dcbee61e5e5c18c232ace2357ed4d4110719c37daa23056c37a9e0f73c1431ae0e699a3e85c4adf838e531a4c82ac9095fc637bbef5e5a1e0925b6aa22bb9
7
+ data.tar.gz: 74b4b462193da378dbcf32b7f9638c597d8dfbe917c2bb12c1924bb889ee65f89de563aa49b62b30a557e52ba5d1563c6d571829fa90d9ea47a86cd12f7ae687
data/.circleci/config.yml CHANGED
@@ -7,7 +7,7 @@ jobs:
7
7
  build:
8
8
  docker:
9
9
  # specify the version you desire here
10
- - image: circleci/ruby:2.7.3
10
+ - image: cimg/ruby:2.7
11
11
 
12
12
  working_directory: ~/repo
13
13
 
data/.gitignore CHANGED
@@ -9,7 +9,6 @@
9
9
  /tmp/
10
10
  /log/
11
11
  .ruby-gemset
12
- .ruby-version
13
12
  .DS_Store
14
13
 
15
- *.gemfile.lock
14
+ *.gemfile.lock
data/.rubocop.yml CHANGED
@@ -2,4 +2,4 @@ inherit_from:
2
2
  - .rubocop_airbnb.yml
3
3
  - .rubocop_todo.yml
4
4
  AllCops:
5
- TargetRubyVersion: 2.4
5
+ NewCops: enable
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2018-06-03 21:15:22 -0700 using RuboCop version 0.52.1.
3
+ # on 2022-04-14 23:18:15 UTC using RuboCop version 0.93.1.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -14,16 +14,27 @@ Layout/MultilineBlockLayout:
14
14
 
15
15
  # Offense count: 4
16
16
  # Cop supports --auto-correct.
17
- # Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters.
17
+ # Configuration parameters: EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters.
18
18
  # SupportedStyles: space, no_space
19
19
  # SupportedStylesForEmptyBraces: space, no_space
20
20
  Layout/SpaceInsideBlockBraces:
21
+ EnforcedStyle: space
22
+
23
+ # Offense count: 1
24
+ # Cop supports --auto-correct.
25
+ Rails/ApplicationController:
21
26
  Exclude:
22
27
  - 'spec/cloudflare/rails_spec.rb'
23
28
 
29
+ # Offense count: 1
30
+ # Cop supports --auto-correct.
31
+ Rails/NegateInclude:
32
+ Exclude:
33
+ - 'lib/cloudflare/rails/railtie.rb'
34
+
24
35
  # Offense count: 4
25
36
  # Cop supports --auto-correct.
26
- # Configuration parameters: EnforcedStyle, ProceduralMethods, FunctionalMethods, IgnoredMethods.
37
+ # Configuration parameters: EnforcedStyle, ProceduralMethods, FunctionalMethods, IgnoredMethods, AllowBracesOnProceduralOneLiners, BracesRequiredMethods.
27
38
  # SupportedStyles: line_count_based, semantic, braces_for_chaining
28
39
  # ProceduralMethods: benchmark, bm, bmbm, create, each_with_object, measure, new, realtime, tap, with_object
29
40
  # FunctionalMethods: let, let!, subject, watch
@@ -32,8 +43,9 @@ Style/BlockDelimiters:
32
43
  Exclude:
33
44
  - 'spec/cloudflare/rails_spec.rb'
34
45
 
35
- # Offense count: 6
36
- # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
46
+ # Offense count: 9
47
+ # Cop supports --auto-correct.
48
+ # Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
37
49
  # URISchemes: http, https
38
- Metrics/LineLength:
50
+ Layout/LineLength:
39
51
  Max: 126
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.2.0
data/Appraisals CHANGED
@@ -1,7 +1,3 @@
1
- appraise "rails-5.2" do
2
- gem "rails", "~> 5.2.0"
3
- end
4
-
5
1
  appraise "rails-6.0" do
6
2
  gem "rails", "~> 6.0.0"
7
3
  end
@@ -11,5 +7,5 @@ appraise "rails-6.1" do
11
7
  end
12
8
 
13
9
  appraise "rails-7.0" do
14
- gem "rails", git: "https://github.com/rails/rails", branch: "main"
10
+ gem "rails", "~> 7.0.0"
15
11
  end
data/CHANGELOG.md CHANGED
@@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
4
4
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [3.0.0] - unreleased
8
+ - Drop support for unsupported `rails` version `5.2.x`
9
+ - Fetch and cache IPs lazily instead of upon initialization (https://github.com/modosc/cloudflare-rails/pull/52)
10
+
7
11
  ## [2.4.0] - 2022-02-22
8
12
  - Add trailing slashes to reflect Cloudflare API URLs (https://github.com/modosc/cloudflare-rails/pull/53)
9
13
 
data/README.md CHANGED
@@ -3,11 +3,15 @@ This gem correctly configures Rails for [CloudFlare](https://www.cloudflare.com)
3
3
 
4
4
  ## Rails Compatibility
5
5
 
6
- This gem requires `railties`, `activesupport`, and `actionpack` >= `5.2`.
7
-
8
- For Rails `5.0` and `5.1` use `2.0.0`.
9
-
10
- For Rails `4.2` use `0.1.x`.
6
+ This gem requires `railties`, `activesupport`, and `actionpack` >= `6.0`. For older `rails` versions see the chart below:
7
+
8
+ | `rails` version | `cloudflare-rails` version |
9
+ | --------------- | -------------------------- |
10
+ | 5.2 | 2.4.0 |
11
+ | 5.1 | 2.0.0 |
12
+ | 5.0 | 2.0.0 |
13
+ | 4.2 | 0.1.0 |
14
+ | ----- | ------- |
11
15
 
12
16
  ## Installation
13
17
 
@@ -22,18 +22,18 @@ Gem::Specification.new do |spec|
22
22
 
23
23
  spec.add_development_dependency "bundler", ">= 2.1.2"
24
24
  spec.add_development_dependency "rake", "~> 13.0.1"
25
- spec.add_development_dependency "rspec_junit_formatter", "~> 0.4.1"
25
+ spec.add_development_dependency "rspec_junit_formatter", "~> 0.6.0"
26
26
  spec.add_development_dependency "rspec-rails", "~> 5.0.1"
27
- spec.add_development_dependency "rspec", "~> 3.10.0"
28
- spec.add_development_dependency "rubocop-airbnb", "~> 3.0.2"
29
- spec.add_development_dependency "webmock", "~> 3.13.0"
30
- spec.add_development_dependency "rack-attack", "~> 6.5.0"
27
+ spec.add_development_dependency "rspec", "~> 3.12.0"
28
+ spec.add_development_dependency "rubocop-airbnb", "~> 4.0.0"
29
+ spec.add_development_dependency "webmock", "~> 3.18.1"
30
+ spec.add_development_dependency "rack-attack", "~> 6.6.1"
31
31
  spec.add_development_dependency "pry-byebug"
32
32
  spec.add_development_dependency "appraisal"
33
33
 
34
- spec.add_dependency "railties", ">= 5.2", "< 7.1.0"
35
- spec.add_dependency "activesupport", ">= 5.2", "< 7.1.0"
36
- spec.add_dependency "actionpack", ">= 5.2", "< 7.1.0"
34
+ spec.add_dependency "railties", ">= 6.0", "< 7.1.0"
35
+ spec.add_dependency "activesupport", ">= 6.0", "< 7.1.0"
36
+ spec.add_dependency "actionpack", ">= 6.0", "< 7.1.0"
37
37
 
38
38
  # we need Module#prepend
39
39
  spec.required_ruby_version = '>= 2.0'
@@ -2,6 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", git: "https://github.com/rails/rails", branch: "main"
5
+ gem "rails", "~> 7.0.0"
6
6
 
7
7
  gemspec path: "../"
@@ -7,7 +7,7 @@ module Cloudflare
7
7
  # correct inside of rack and rails
8
8
  module CheckTrustedProxies
9
9
  def trusted_proxy?(ip)
10
- matching = ::Rails.application.config.cloudflare.ips.any? do |proxy|
10
+ matching = Importer.cloudflare_ips.any? do |proxy|
11
11
  begin
12
12
  proxy === ip
13
13
  rescue IPAddr::InvalidAddressError
@@ -21,7 +21,7 @@ module Cloudflare
21
21
  # request.remote_ip is correct inside of rails
22
22
  module RemoteIpProxies
23
23
  def proxies
24
- super + ::Rails.application.config.cloudflare.ips
24
+ super + Importer.cloudflare_ips
25
25
  end
26
26
  end
27
27
 
@@ -79,6 +79,14 @@ module Cloudflare
79
79
  send type
80
80
  end
81
81
  end
82
+
83
+ def cloudflare_ips(refresh: false)
84
+ @ips = nil if refresh
85
+ @ips ||= (Importer.fetch_with_cache(:ips_v4) + Importer.fetch_with_cache(:ips_v6)).freeze
86
+ rescue StandardError => e
87
+ ::Rails.logger.error(e)
88
+ []
89
+ end
82
90
  end
83
91
  end
84
92
 
@@ -94,20 +102,6 @@ module Cloudflare
94
102
  app.config.cloudflare.reverse_merge! DEFAULTS
95
103
  end
96
104
 
97
- # we set config.cloudflare.ips after_initialize so that our cache will
98
- # be correctly setup. we rescue and log errors so that failures won't prevent
99
- # rails from booting
100
- config.after_initialize do |app|
101
- [:ips_v4, :ips_v6].each do |type|
102
- begin
103
- ::Rails.application.config.cloudflare.ips += Importer.fetch_with_cache(type)
104
- rescue Importer::ResponseError => e
105
- ::Rails.logger.error "Cloudflare::Rails: Couldn't import #{type} blocks from CloudFlare: #{e.response}"
106
- rescue StandardError => e
107
- ::Rails.logger.error "Cloudflare::Rails: Got exception: #{e} for type: #{type}"
108
- end
109
- end
110
- end
111
105
  initializer "my_railtie.configure_rails_initialization" do
112
106
  Rack::Request::Helpers.prepend CheckTrustedProxies
113
107
 
@@ -1,5 +1,5 @@
1
1
  module Cloudflare
2
2
  module Rails
3
- VERSION = "2.4.0".freeze
3
+ VERSION = "3.0.0".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudflare-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - jonathan schatz
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-23 00:00:00.000000000 Z
11
+ date: 2023-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.4.1
47
+ version: 0.6.0
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.4.1
54
+ version: 0.6.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec-rails
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -72,56 +72,56 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 3.10.0
75
+ version: 3.12.0
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 3.10.0
82
+ version: 3.12.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: rubocop-airbnb
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 3.0.2
89
+ version: 4.0.0
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 3.0.2
96
+ version: 4.0.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: webmock
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 3.13.0
103
+ version: 3.18.1
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: 3.13.0
110
+ version: 3.18.1
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: rack-attack
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: 6.5.0
117
+ version: 6.6.1
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: 6.5.0
124
+ version: 6.6.1
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: pry-byebug
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -156,7 +156,7 @@ dependencies:
156
156
  requirements:
157
157
  - - ">="
158
158
  - !ruby/object:Gem::Version
159
- version: '5.2'
159
+ version: '6.0'
160
160
  - - "<"
161
161
  - !ruby/object:Gem::Version
162
162
  version: 7.1.0
@@ -166,7 +166,7 @@ dependencies:
166
166
  requirements:
167
167
  - - ">="
168
168
  - !ruby/object:Gem::Version
169
- version: '5.2'
169
+ version: '6.0'
170
170
  - - "<"
171
171
  - !ruby/object:Gem::Version
172
172
  version: 7.1.0
@@ -176,7 +176,7 @@ dependencies:
176
176
  requirements:
177
177
  - - ">="
178
178
  - !ruby/object:Gem::Version
179
- version: '5.2'
179
+ version: '6.0'
180
180
  - - "<"
181
181
  - !ruby/object:Gem::Version
182
182
  version: 7.1.0
@@ -186,7 +186,7 @@ dependencies:
186
186
  requirements:
187
187
  - - ">="
188
188
  - !ruby/object:Gem::Version
189
- version: '5.2'
189
+ version: '6.0'
190
190
  - - "<"
191
191
  - !ruby/object:Gem::Version
192
192
  version: 7.1.0
@@ -196,7 +196,7 @@ dependencies:
196
196
  requirements:
197
197
  - - ">="
198
198
  - !ruby/object:Gem::Version
199
- version: '5.2'
199
+ version: '6.0'
200
200
  - - "<"
201
201
  - !ruby/object:Gem::Version
202
202
  version: 7.1.0
@@ -206,7 +206,7 @@ dependencies:
206
206
  requirements:
207
207
  - - ">="
208
208
  - !ruby/object:Gem::Version
209
- version: '5.2'
209
+ version: '6.0'
210
210
  - - "<"
211
211
  - !ruby/object:Gem::Version
212
212
  version: 7.1.0
@@ -224,6 +224,7 @@ files:
224
224
  - ".rubocop.yml"
225
225
  - ".rubocop_airbnb.yml"
226
226
  - ".rubocop_todo.yml"
227
+ - ".ruby-version"
227
228
  - Appraisals
228
229
  - CHANGELOG.md
229
230
  - Gemfile
@@ -234,7 +235,6 @@ files:
234
235
  - bin/setup
235
236
  - cloudflare-rails.gemspec
236
237
  - gemfiles/.bundle/config
237
- - gemfiles/rails_5.2.gemfile
238
238
  - gemfiles/rails_6.0.gemfile
239
239
  - gemfiles/rails_6.1.gemfile
240
240
  - gemfiles/rails_7.0.gemfile
@@ -260,7 +260,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
260
260
  - !ruby/object:Gem::Version
261
261
  version: '0'
262
262
  requirements: []
263
- rubygems_version: 3.2.22
263
+ rubygems_version: 3.4.1
264
264
  signing_key:
265
265
  specification_version: 4
266
266
  summary: This gem configures Rails for CloudFlare so that request.ip and request.remote_ip
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 5.2.0"
6
-
7
- gemspec path: "../"