cloudflare-rails 2.4.0.pre.beta.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c1a2e44d7bd29c0dc2341b7faf87c656a21ddb96396a611076ba9ddfae79c65c
4
- data.tar.gz: 34b4900fc88e75206feeed25e1e5e43c88343e4a655b8fd8a1f28b71389642d3
3
+ metadata.gz: 9f6d6411a565dbb86d9a6c07ac4d54d081111e2cb8ba879fcc212923cbea7697
4
+ data.tar.gz: 2c7104876a1415d654d71e073c58b973ea4d3391fa91ff40d9381b6fdd300d79
5
5
  SHA512:
6
- metadata.gz: 34575cf27372171d29709ae245d9527fd1a3fd0f7c696b3a1a759d55277708241b12270fe7d213c521648bd89779051d43729929d1d190bcda49c01ff5cada82
7
- data.tar.gz: 3b85514ae3eed71fce038209c701044f2f003cd9d984f9e5fbe68ce11629660d5ef234793c8c88e69126a51a49b076e9f53364303db921897c7b6aa211ccc89c
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,8 +4,12 @@ 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
- ## [2.4.0-beta.0] - 12-10-24
8
- - Skip fetching and caching of Cloudflare ip address when Rails::Console is defined or when ENV['DISABLE_CLOUDFLARE_RAILS] is set
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
+
11
+ ## [2.4.0] - 2022-02-22
12
+ - Add trailing slashes to reflect Cloudflare API URLs (https://github.com/modosc/cloudflare-rails/pull/53)
9
13
 
10
14
  ## [2.3.0] - 2021-10-22
11
15
  - Better handling of malformed IP addresses (https://github.com/modosc/cloudflare-rails/pull/49)
data/Gemfile CHANGED
@@ -2,7 +2,3 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in cloudflare-rails.gemspec
4
4
  gemspec
5
-
6
- group :development do
7
- gem "rspec-isolation", git: "https://github.com/modosc/rspec-isolation"
8
- end
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,19 +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
- spec.add_development_dependency "climate_control"
34
33
 
35
- spec.add_dependency "railties", ">= 5.2", "< 7.1.0"
36
- spec.add_dependency "activesupport", ">= 5.2", "< 7.1.0"
37
- 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"
38
37
 
39
38
  # we need Module#prepend
40
39
  spec.required_ruby_version = '>= 2.0'
@@ -4,8 +4,4 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "~> 6.0.0"
6
6
 
7
- group :development do
8
- gem "rspec-isolation", git: "https://github.com/modosc/rspec-isolation"
9
- end
10
-
11
7
  gemspec path: "../"
@@ -4,8 +4,4 @@ source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "~> 6.1.0"
6
6
 
7
- group :development do
8
- gem "rspec-isolation", git: "https://github.com/modosc/rspec-isolation"
9
- end
10
-
11
7
  gemspec path: "../"
@@ -2,10 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", git: "https://github.com/rails/rails", branch: "main"
6
-
7
- group :development do
8
- gem "rspec-isolation", git: "https://github.com/modosc/rspec-isolation"
9
- end
5
+ gem "rails", "~> 7.0.0"
10
6
 
11
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
 
@@ -43,8 +43,8 @@ module Cloudflare
43
43
  end
44
44
 
45
45
  BASE_URL = 'https://www.cloudflare.com'.freeze
46
- IPS_V4_URL = '/ips-v4'.freeze
47
- IPS_V6_URL = '/ips-v6'.freeze
46
+ IPS_V4_URL = '/ips-v4/'.freeze
47
+ IPS_V6_URL = '/ips-v6/'.freeze
48
48
 
49
49
  class << self
50
50
  def ips_v6
@@ -55,10 +55,6 @@ module Cloudflare
55
55
  fetch IPS_V4_URL
56
56
  end
57
57
 
58
- def should_skip?
59
- defined?(::Rails::Console) || ENV.key?('DISABLE_CLOUDFLARE_RAILS')
60
- end
61
-
62
58
  def fetch(url)
63
59
  uri = URI("#{BASE_URL}#{url}")
64
60
 
@@ -79,11 +75,18 @@ module Cloudflare
79
75
  end
80
76
 
81
77
  def fetch_with_cache(type)
82
- return if should_skip?
83
78
  ::Rails.cache.fetch("cloudflare-rails:#{type}", expires_in: ::Rails.application.config.cloudflare.expires_in) do
84
79
  send type
85
80
  end
86
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
87
90
  end
88
91
  end
89
92
 
@@ -99,20 +102,6 @@ module Cloudflare
99
102
  app.config.cloudflare.reverse_merge! DEFAULTS
100
103
  end
101
104
 
102
- # we set config.cloudflare.ips after_initialize so that our cache will
103
- # be correctly setup. we rescue and log errors so that failures won't prevent
104
- # rails from booting
105
- config.after_initialize do |app|
106
- [:ips_v4, :ips_v6].each do |type|
107
- begin
108
- ::Rails.application.config.cloudflare.ips += Importer.fetch_with_cache(type)
109
- rescue Importer::ResponseError => e
110
- ::Rails.logger.error "Cloudflare::Rails: Couldn't import #{type} blocks from CloudFlare: #{e.response}"
111
- rescue StandardError => e
112
- ::Rails.logger.error "Cloudflare::Rails: Got exception: #{e} for type: #{type}"
113
- end
114
- end
115
- end
116
105
  initializer "my_railtie.configure_rails_initialization" do
117
106
  Rack::Request::Helpers.prepend CheckTrustedProxies
118
107
 
@@ -1,5 +1,5 @@
1
1
  module Cloudflare
2
2
  module Rails
3
- VERSION = "2.4.0-beta.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.pre.beta.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: 2021-10-24 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
@@ -150,27 +150,13 @@ dependencies:
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
- - !ruby/object:Gem::Dependency
154
- name: climate_control
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - ">="
158
- - !ruby/object:Gem::Version
159
- version: '0'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - ">="
165
- - !ruby/object:Gem::Version
166
- version: '0'
167
153
  - !ruby/object:Gem::Dependency
168
154
  name: railties
169
155
  requirement: !ruby/object:Gem::Requirement
170
156
  requirements:
171
157
  - - ">="
172
158
  - !ruby/object:Gem::Version
173
- version: '5.2'
159
+ version: '6.0'
174
160
  - - "<"
175
161
  - !ruby/object:Gem::Version
176
162
  version: 7.1.0
@@ -180,7 +166,7 @@ dependencies:
180
166
  requirements:
181
167
  - - ">="
182
168
  - !ruby/object:Gem::Version
183
- version: '5.2'
169
+ version: '6.0'
184
170
  - - "<"
185
171
  - !ruby/object:Gem::Version
186
172
  version: 7.1.0
@@ -190,7 +176,7 @@ dependencies:
190
176
  requirements:
191
177
  - - ">="
192
178
  - !ruby/object:Gem::Version
193
- version: '5.2'
179
+ version: '6.0'
194
180
  - - "<"
195
181
  - !ruby/object:Gem::Version
196
182
  version: 7.1.0
@@ -200,7 +186,7 @@ dependencies:
200
186
  requirements:
201
187
  - - ">="
202
188
  - !ruby/object:Gem::Version
203
- version: '5.2'
189
+ version: '6.0'
204
190
  - - "<"
205
191
  - !ruby/object:Gem::Version
206
192
  version: 7.1.0
@@ -210,7 +196,7 @@ dependencies:
210
196
  requirements:
211
197
  - - ">="
212
198
  - !ruby/object:Gem::Version
213
- version: '5.2'
199
+ version: '6.0'
214
200
  - - "<"
215
201
  - !ruby/object:Gem::Version
216
202
  version: 7.1.0
@@ -220,7 +206,7 @@ dependencies:
220
206
  requirements:
221
207
  - - ">="
222
208
  - !ruby/object:Gem::Version
223
- version: '5.2'
209
+ version: '6.0'
224
210
  - - "<"
225
211
  - !ruby/object:Gem::Version
226
212
  version: 7.1.0
@@ -238,6 +224,7 @@ files:
238
224
  - ".rubocop.yml"
239
225
  - ".rubocop_airbnb.yml"
240
226
  - ".rubocop_todo.yml"
227
+ - ".ruby-version"
241
228
  - Appraisals
242
229
  - CHANGELOG.md
243
230
  - Gemfile
@@ -248,7 +235,6 @@ files:
248
235
  - bin/setup
249
236
  - cloudflare-rails.gemspec
250
237
  - gemfiles/.bundle/config
251
- - gemfiles/rails_5.2.gemfile
252
238
  - gemfiles/rails_6.0.gemfile
253
239
  - gemfiles/rails_6.1.gemfile
254
240
  - gemfiles/rails_7.0.gemfile
@@ -270,11 +256,11 @@ required_ruby_version: !ruby/object:Gem::Requirement
270
256
  version: '2.0'
271
257
  required_rubygems_version: !ruby/object:Gem::Requirement
272
258
  requirements:
273
- - - ">"
259
+ - - ">="
274
260
  - !ruby/object:Gem::Version
275
- version: 1.3.1
261
+ version: '0'
276
262
  requirements: []
277
- rubygems_version: 3.2.18
263
+ rubygems_version: 3.4.1
278
264
  signing_key:
279
265
  specification_version: 4
280
266
  summary: This gem configures Rails for CloudFlare so that request.ip and request.remote_ip
@@ -1,11 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 5.2.0"
6
-
7
- group :development do
8
- gem "rspec-isolation", git: "https://github.com/modosc/rspec-isolation"
9
- end
10
-
11
- gemspec path: "../"