cloudflare-rails 2.4.0 → 4.1.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: 60ed180dedad2fcf57532cced88e34d37be0add173ab41d14265b26a19f708d8
4
+ data.tar.gz: 38032a3aa5e0e8050b57d46d6959a08ae3a6b8535441a1e1cd5192b53d26db50
5
5
  SHA512:
6
- metadata.gz: 55dad9534a826670be89601a3404d420535b92e42639e44a001e2f869711c3e7347b2d810ef00967d5f51f680e0517d0c856aa26c1caff8531988722fef00910
7
- data.tar.gz: 45000db30d0f95515c7d69a4295a4f69d68b2285c638a24b4f1d30b79c53aa5940beb861b7dcc9c2cc75183ab039baaedc34f84510c5455abf7b68d46cc76379
6
+ metadata.gz: 83e0c04af97a4cdd8376ab8d7fe32453b36564d23807c15b3d3e753b7e0b6ab18f161148f4817ea1c62fa48931826b2809b09bf26b1e492051399f07811b1185
7
+ data.tar.gz: dc2376bf386241d45c92924db349cb6c8e7716eba1c10cf04460ed48f0679ffb52d72b7e1321cce5110f4bb6e93e7b911151676b8dcea359090fb024b51dba81
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,5 @@ inherit_from:
2
2
  - .rubocop_airbnb.yml
3
3
  - .rubocop_todo.yml
4
4
  AllCops:
5
- TargetRubyVersion: 2.4
5
+ NewCops: enable
6
+ SuggestExtensions: false
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.2
data/Appraisals CHANGED
@@ -1,15 +1,11 @@
1
- appraise "rails-5.2" do
2
- gem "rails", "~> 5.2.0"
3
- end
4
-
5
- appraise "rails-6.0" do
6
- gem "rails", "~> 6.0.0"
7
- end
8
-
9
1
  appraise "rails-6.1" do
10
2
  gem "rails", "~> 6.1.0"
11
3
  end
12
4
 
13
5
  appraise "rails-7.0" do
14
- gem "rails", git: "https://github.com/rails/rails", branch: "main"
6
+ gem "rails", "~> 7.0.0"
7
+ end
8
+
9
+ appraise "rails-7.1" do
10
+ gem "rails", "~> 7.1.0"
15
11
  end
data/CHANGELOG.md CHANGED
@@ -4,6 +4,18 @@ 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
+ ## [4.1.0] - 2023-10-06
8
+ - Add support for `rails` version `7.1.0`
9
+
10
+ ## [4.0.0] - 2023-08-06
11
+ - Fix `appraisal` for ruby `3.x`
12
+ - properly scope railtie initializer (https://github.com/modosc/cloudflare-rails/pull/79)
13
+ - Drop support for unsupported `rails` version `6.0.x`
14
+
15
+ ## [3.0.0] - 2023-01-30
16
+ - Drop support for unsupported `rails` version `5.2.x`
17
+ - Fetch and cache IPs lazily instead of upon initialization (https://github.com/modosc/cloudflare-rails/pull/52)
18
+
7
19
  ## [2.4.0] - 2022-02-22
8
20
  - Add trailing slashes to reflect Cloudflare API URLs (https://github.com/modosc/cloudflare-rails/pull/53)
9
21
 
data/README.md CHANGED
@@ -3,11 +3,16 @@ 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.1`. For older `rails` versions see the chart below:
7
+
8
+ | `rails` version | `cloudflare-rails` version |
9
+ | --------------- | -------------------------- |
10
+ | 6.0 | 3.0.0 |
11
+ | 5.2 | 2.4.0 |
12
+ | 5.1 | 2.0.0 |
13
+ | 5.0 | 2.0.0 |
14
+ | 4.2 | 0.1.0 |
15
+ | ----- | ------- |
11
16
 
12
17
  ## Installation
13
18
 
@@ -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"
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"
25
+ spec.add_development_dependency "rspec_junit_formatter", "~> 0.6.0"
26
+ spec.add_development_dependency "rspec-rails", "~> 6.0.0"
27
+ spec.add_development_dependency "rspec", "~> 3.12.0"
28
+ spec.add_development_dependency "rubocop-airbnb", "~> 6.0.0"
29
+ spec.add_development_dependency "webmock", "~> 3.19.1"
30
+ spec.add_development_dependency "rack-attack", "~> 6.7.0"
31
31
  spec.add_development_dependency "pry-byebug"
32
- spec.add_development_dependency "appraisal"
32
+ spec.add_development_dependency "appraisal", "~> 2.5.0"
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.1", "< 7.2.0"
35
+ spec.add_dependency "activesupport", ">= 6.1", "< 7.2.0"
36
+ spec.add_dependency "actionpack", ">= 6.1", "< 7.2.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: "../"
@@ -2,6 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "~> 5.2.0"
5
+ gem "rails", "~> 7.1.0"
6
6
 
7
7
  gemspec path: "../"
@@ -7,11 +7,9 @@ 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|
11
- begin
12
- proxy === ip
13
- rescue IPAddr::InvalidAddressError
14
- end
10
+ matching = Importer.cloudflare_ips.any? do |proxy|
11
+ proxy === ip
12
+ rescue IPAddr::InvalidAddressError
15
13
  end
16
14
  matching || super
17
15
  end
@@ -21,7 +19,7 @@ module Cloudflare
21
19
  # request.remote_ip is correct inside of rails
22
20
  module RemoteIpProxies
23
21
  def proxies
24
- super + ::Rails.application.config.cloudflare.ips
22
+ super + Importer.cloudflare_ips
25
23
  end
26
24
  end
27
25
 
@@ -79,6 +77,14 @@ module Cloudflare
79
77
  send type
80
78
  end
81
79
  end
80
+
81
+ def cloudflare_ips(refresh: false)
82
+ @ips = nil if refresh
83
+ @ips ||= (Importer.fetch_with_cache(:ips_v4) + Importer.fetch_with_cache(:ips_v6)).freeze
84
+ rescue StandardError => e
85
+ ::Rails.logger.error(e)
86
+ []
87
+ end
82
88
  end
83
89
  end
84
90
 
@@ -94,21 +100,7 @@ module Cloudflare
94
100
  app.config.cloudflare.reverse_merge! DEFAULTS
95
101
  end
96
102
 
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
- initializer "my_railtie.configure_rails_initialization" do
103
+ initializer "cloudflare_rails.configure_rails_initialization" do
112
104
  Rack::Request::Helpers.prepend CheckTrustedProxies
113
105
 
114
106
  ObjectSpace.each_object(Class).
@@ -1,5 +1,5 @@
1
1
  module Cloudflare
2
2
  module Rails
3
- VERSION = "2.4.0".freeze
3
+ VERSION = "4.1.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: 4.1.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-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -44,84 +44,84 @@ 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
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 5.0.1
61
+ version: 6.0.0
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 5.0.1
68
+ version: 6.0.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
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: 6.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: 6.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.19.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.19.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.7.0
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.7.0
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: pry-byebug
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -140,76 +140,76 @@ dependencies:
140
140
  name: appraisal
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - ">="
143
+ - - "~>"
144
144
  - !ruby/object:Gem::Version
145
- version: '0'
145
+ version: 2.5.0
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - ">="
150
+ - - "~>"
151
151
  - !ruby/object:Gem::Version
152
- version: '0'
152
+ version: 2.5.0
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: railties
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - ">="
158
158
  - !ruby/object:Gem::Version
159
- version: '5.2'
159
+ version: '6.1'
160
160
  - - "<"
161
161
  - !ruby/object:Gem::Version
162
- version: 7.1.0
162
+ version: 7.2.0
163
163
  type: :runtime
164
164
  prerelease: false
165
165
  version_requirements: !ruby/object:Gem::Requirement
166
166
  requirements:
167
167
  - - ">="
168
168
  - !ruby/object:Gem::Version
169
- version: '5.2'
169
+ version: '6.1'
170
170
  - - "<"
171
171
  - !ruby/object:Gem::Version
172
- version: 7.1.0
172
+ version: 7.2.0
173
173
  - !ruby/object:Gem::Dependency
174
174
  name: activesupport
175
175
  requirement: !ruby/object:Gem::Requirement
176
176
  requirements:
177
177
  - - ">="
178
178
  - !ruby/object:Gem::Version
179
- version: '5.2'
179
+ version: '6.1'
180
180
  - - "<"
181
181
  - !ruby/object:Gem::Version
182
- version: 7.1.0
182
+ version: 7.2.0
183
183
  type: :runtime
184
184
  prerelease: false
185
185
  version_requirements: !ruby/object:Gem::Requirement
186
186
  requirements:
187
187
  - - ">="
188
188
  - !ruby/object:Gem::Version
189
- version: '5.2'
189
+ version: '6.1'
190
190
  - - "<"
191
191
  - !ruby/object:Gem::Version
192
- version: 7.1.0
192
+ version: 7.2.0
193
193
  - !ruby/object:Gem::Dependency
194
194
  name: actionpack
195
195
  requirement: !ruby/object:Gem::Requirement
196
196
  requirements:
197
197
  - - ">="
198
198
  - !ruby/object:Gem::Version
199
- version: '5.2'
199
+ version: '6.1'
200
200
  - - "<"
201
201
  - !ruby/object:Gem::Version
202
- version: 7.1.0
202
+ version: 7.2.0
203
203
  type: :runtime
204
204
  prerelease: false
205
205
  version_requirements: !ruby/object:Gem::Requirement
206
206
  requirements:
207
207
  - - ">="
208
208
  - !ruby/object:Gem::Version
209
- version: '5.2'
209
+ version: '6.1'
210
210
  - - "<"
211
211
  - !ruby/object:Gem::Version
212
- version: 7.1.0
212
+ version: 7.2.0
213
213
  description: ''
214
214
  email:
215
215
  - modosc@users.noreply.github.com
@@ -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,10 +235,9 @@ files:
234
235
  - bin/setup
235
236
  - cloudflare-rails.gemspec
236
237
  - gemfiles/.bundle/config
237
- - gemfiles/rails_5.2.gemfile
238
- - gemfiles/rails_6.0.gemfile
239
238
  - gemfiles/rails_6.1.gemfile
240
239
  - gemfiles/rails_7.0.gemfile
240
+ - gemfiles/rails_7.1.gemfile
241
241
  - lib/cloudflare/rails.rb
242
242
  - lib/cloudflare/rails/railtie.rb
243
243
  - lib/cloudflare/rails/version.rb
@@ -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.10
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", "~> 6.0.0"
6
-
7
- gemspec path: "../"