cloudflare-rails 0.5.0 → 1.2.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 +4 -4
- data/.circleci/config.yml +9 -4
- data/.github/dependabot.yml +8 -0
- data/.gitignore +3 -1
- data/.rspec +1 -1
- data/Appraisals +19 -0
- data/CHANGELOG.md +12 -0
- data/README.md +5 -7
- data/Rakefile +9 -3
- data/cloudflare-rails.gemspec +9 -8
- data/gemfiles/.bundle/config +2 -0
- data/gemfiles/rails_5.0.gemfile +7 -0
- data/gemfiles/rails_5.1.gemfile +7 -0
- data/gemfiles/rails_5.2.gemfile +7 -0
- data/gemfiles/rails_6.0.gemfile +7 -0
- data/gemfiles/rails_6.1.gemfile +7 -0
- data/lib/cloudflare/rails/railtie.rb +14 -12
- data/lib/cloudflare/rails/version.rb +1 -1
- metadata +51 -22
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cd4b756d17197d18b6ed4daba9b3a98f4105410d95785f835013701fe372e813
|
|
4
|
+
data.tar.gz: 8be58cbbc6d6b7b32aa4280d3acc4c6c2fe8b7e77f06bc62dada0d080ca021a3
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 603165c9c4e53bcd4bbe0f608659cef70a6c2f20d6c96807d78007e7128613d13171a3126516f38c8caa181b759908321db4d2788325698392ca872a1799b4d3
|
|
7
|
+
data.tar.gz: 7e72201d4968db350b38d5f237b5a3e5931f1ec5fd921917b227e7b78dd3ed4f2fd0f641b09c5a3240d33892e980e322a4e73b4949612dc10690f7e5b1821e38
|
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.
|
|
10
|
+
- image: circleci/ruby:2.7.0
|
|
11
11
|
|
|
12
12
|
working_directory: ~/repo
|
|
13
13
|
|
|
@@ -17,7 +17,7 @@ jobs:
|
|
|
17
17
|
# Download and cache dependencies
|
|
18
18
|
- restore_cache:
|
|
19
19
|
keys:
|
|
20
|
-
- v1-dependencies-{{ checksum "cloudflare-rails.gemspec" }}
|
|
20
|
+
- v1-dependencies-{{ checksum "cloudflare-rails.gemspec" }}-{{ checksum "Appraisals" }}
|
|
21
21
|
# fallback to using the latest cache if no exact match is found
|
|
22
22
|
- v1-dependencies-
|
|
23
23
|
|
|
@@ -26,16 +26,21 @@ jobs:
|
|
|
26
26
|
command: |
|
|
27
27
|
bundle install --jobs=4 --retry=3 --path vendor/bundle
|
|
28
28
|
|
|
29
|
+
- run:
|
|
30
|
+
name: install appraisal versions
|
|
31
|
+
command: |
|
|
32
|
+
bundle exec appraisal install
|
|
33
|
+
|
|
29
34
|
- save_cache:
|
|
30
35
|
paths:
|
|
31
36
|
- ./vendor/bundle
|
|
32
|
-
key: v1-dependencies-{{ checksum "
|
|
37
|
+
key: v1-dependencies-{{ checksum "cloudflare-rails.gemspec" }}-{{ checksum "Appraisals" }}
|
|
33
38
|
|
|
34
39
|
# run tests!
|
|
35
40
|
- run:
|
|
36
41
|
name: run tests
|
|
37
42
|
command: |
|
|
38
|
-
bundle exec rake
|
|
43
|
+
bundle exec appraisal rake
|
|
39
44
|
# collect reports
|
|
40
45
|
- store_test_results:
|
|
41
46
|
path: tmp/rspec
|
data/.gitignore
CHANGED
data/.rspec
CHANGED
data/Appraisals
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
appraise "rails-5.0" do
|
|
2
|
+
gem "rails", "~> 5.0.0"
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
appraise "rails-5.1" do
|
|
6
|
+
gem "rails", "~> 5.1.0"
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
appraise "rails-5.2" do
|
|
10
|
+
gem "rails", "~> 5.2.0"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
appraise "rails-6.0" do
|
|
14
|
+
gem "rails", "~> 6.0.0"
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
appraise "rails-6.1" do
|
|
18
|
+
gem "rails", "~> 6.1.0"
|
|
19
|
+
end
|
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
All notable changes to this project will be documented in this file.
|
|
3
|
+
|
|
4
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
5
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
6
|
+
|
|
7
|
+
## [Unreleased]
|
|
8
|
+
|
|
9
|
+
## [1.0.0] - 2020-09-29
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Fix various [loading order issues](https://github.com/modosc/cloudflare-rails/pull/25).
|
data/README.md
CHANGED
|
@@ -3,9 +3,7 @@ This gem correctly configures Rails for [CloudFlare](https://www.cloudflare.com)
|
|
|
3
3
|
|
|
4
4
|
## Rails Compatibility
|
|
5
5
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
For Rails 4.2, use `0.1.x`
|
|
6
|
+
This gem requires Rails >= 5. The last version that supports Rails 4.2 is `0.1.x`.
|
|
9
7
|
|
|
10
8
|
## Installation
|
|
11
9
|
|
|
@@ -25,22 +23,22 @@ And then execute:
|
|
|
25
23
|
|
|
26
24
|
## Problem
|
|
27
25
|
|
|
28
|
-
Using Cloudflare means it's hard to identify the IP address of incoming requests since all requests are proxied through Cloudflare's infrastructure. Cloudflare provides a [CF-Connecting-IP](https://support.cloudflare.com/hc/en-us/articles/200170986-How-does-Cloudflare-handle-HTTP-Request-headers-) header which can be used to identify the originating IP address of a request. However, this header alone doesn't verify a request is legitimate. If an attacker has found the actual IP address of your server they could spoof this header and masquerade as legitimate traffic.
|
|
26
|
+
Using Cloudflare means it's hard to identify the IP address of incoming requests since all requests are proxied through Cloudflare's infrastructure. Cloudflare provides a [CF-Connecting-IP](https://support.cloudflare.com/hc/en-us/articles/200170986-How-does-Cloudflare-handle-HTTP-Request-headers-) header which can be used to identify the originating IP address of a request. However, this header alone doesn't verify a request is legitimate. If an attacker has found the actual IP address of your server they could spoof this header and masquerade as legitimate traffic.
|
|
29
27
|
|
|
30
28
|
`cloudflare-rails` mitigates this attack by checking that the originating ip address of any incoming connecting is from one of Cloudflare's ip address ranges. If so, the incoming `X-Forwarded-For` header is trusted and used as the ip address provided to `rack` and `rails` (via `request.ip` and `request.remote_ip`). If the incoming connection does not originate from a Cloudflare server then the `X-Forwarded-For` header is ignored and the actual remote ip address is used.
|
|
31
29
|
|
|
32
30
|
## Usage
|
|
33
|
-
This code will fetch CloudFlare's current [IPv4](https://www.cloudflare.com/ips-v4) and [IPv6](https://www.cloudflare.com/ips-v6) lists, store them in `Rails.cache`, and add them to `config.cloudflare.ips`. The `X-Forwarded-For` header will then be trusted only from those ip addresses.
|
|
31
|
+
This code will fetch CloudFlare's current [IPv4](https://www.cloudflare.com/ips-v4) and [IPv6](https://www.cloudflare.com/ips-v6) lists, store them in `Rails.cache`, and add them to `config.cloudflare.ips`. The `X-Forwarded-For` header will then be trusted only from those ip addresses.
|
|
34
32
|
|
|
35
33
|
You can configure the HTTP `timeout` and `expires_in` cache parameters inside of your rails config:
|
|
36
|
-
```
|
|
34
|
+
```ruby
|
|
37
35
|
config.cloudflare.expires_in = 12.hours # default value
|
|
38
36
|
config.cloudflare.timeout = 5.seconds # default value
|
|
39
37
|
```
|
|
40
38
|
|
|
41
39
|
## Alternatives
|
|
42
40
|
|
|
43
|
-
[actionpack-cloudflare](https://github.com/customink/actionpack-cloudflare) simpler approach using the `CF-Connecting-IP` header.
|
|
41
|
+
[actionpack-cloudflare](https://github.com/customink/actionpack-cloudflare) simpler approach using the `CF-Connecting-IP` header.
|
|
44
42
|
|
|
45
43
|
## Development
|
|
46
44
|
|
data/Rakefile
CHANGED
|
@@ -9,10 +9,16 @@ task :without_rack_attack do
|
|
|
9
9
|
Rake::Task["spec"].invoke
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
task :
|
|
13
|
-
ENV['RACK_ATTACK'] = '
|
|
12
|
+
task :with_rack_attack_first do
|
|
13
|
+
ENV['RACK_ATTACK'] = 'first'
|
|
14
14
|
Rake::Task["spec"].reenable
|
|
15
15
|
Rake::Task["spec"].invoke
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
task :
|
|
18
|
+
task :with_rack_attack_last do
|
|
19
|
+
ENV['RACK_ATTACK'] = 'last'
|
|
20
|
+
Rake::Task["spec"].reenable
|
|
21
|
+
Rake::Task["spec"].invoke
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
task :default => [:without_rack_attack, :with_rack_attack_first, :with_rack_attack_last]
|
data/cloudflare-rails.gemspec
CHANGED
|
@@ -20,18 +20,19 @@ Gem::Specification.new do |spec|
|
|
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
21
21
|
spec.require_paths = ["lib"]
|
|
22
22
|
|
|
23
|
-
spec.add_development_dependency "bundler", "~> 1.
|
|
24
|
-
spec.add_development_dependency "rake", "~>
|
|
23
|
+
spec.add_development_dependency "bundler", "~> 2.1.2"
|
|
24
|
+
spec.add_development_dependency "rake", "~> 13.0.1"
|
|
25
25
|
spec.add_development_dependency "rspec_junit_formatter", "~> 0.4.1"
|
|
26
|
-
spec.add_development_dependency "rspec-rails", "~>
|
|
27
|
-
spec.add_development_dependency "rspec", "~> 3.
|
|
28
|
-
spec.add_development_dependency "rubocop-airbnb", "~>
|
|
29
|
-
spec.add_development_dependency "webmock", "~> 3.
|
|
30
|
-
spec.add_development_dependency "rack-attack", "~> 6.
|
|
26
|
+
spec.add_development_dependency "rspec-rails", "~> 4.0.0"
|
|
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.11.0"
|
|
30
|
+
spec.add_development_dependency "rack-attack", "~> 6.4.0"
|
|
31
31
|
spec.add_development_dependency "pry-byebug"
|
|
32
|
+
spec.add_development_dependency "appraisal"
|
|
32
33
|
|
|
33
34
|
spec.add_dependency "httparty"
|
|
34
|
-
spec.add_dependency "rails", "
|
|
35
|
+
spec.add_dependency "rails", ">= 5.0", "< 6.2.0"
|
|
35
36
|
|
|
36
37
|
# we need Module#prepend
|
|
37
38
|
spec.required_ruby_version = '>= 2.0'
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
require "active_support/core_ext/integer/time"
|
|
1
2
|
require "httparty"
|
|
2
3
|
|
|
3
4
|
module Cloudflare
|
|
@@ -11,15 +12,6 @@ module Cloudflare
|
|
|
11
12
|
end
|
|
12
13
|
end
|
|
13
14
|
|
|
14
|
-
Rack::Request::Helpers.prepend CheckTrustedProxies
|
|
15
|
-
|
|
16
|
-
# rack-attack Rack::Request before the above is run, so if rack-attack is loaded we need to
|
|
17
|
-
# prepend our module there as well, see:
|
|
18
|
-
# https://github.com/kickstarter/rack-attack/blob/4fc4d79c9d2697ec21263109af23f11ea93a23ce/lib/rack/attack/request.rb
|
|
19
|
-
if defined? Rack::Attack::Request
|
|
20
|
-
Rack::Attack::Request.prepend CheckTrustedProxies
|
|
21
|
-
end
|
|
22
|
-
|
|
23
15
|
# patch ActionDispatch::RemoteIP to use our cloudflare ips - this way
|
|
24
16
|
# request.remote_ip is correct inside of rails
|
|
25
17
|
module RemoteIpProxies
|
|
@@ -28,8 +20,6 @@ module Cloudflare
|
|
|
28
20
|
end
|
|
29
21
|
end
|
|
30
22
|
|
|
31
|
-
ActionDispatch::RemoteIp.prepend RemoteIpProxies
|
|
32
|
-
|
|
33
23
|
class Importer
|
|
34
24
|
include HTTParty
|
|
35
25
|
base_uri 'https://www.cloudflare.com'
|
|
@@ -89,10 +79,22 @@ module Cloudflare
|
|
|
89
79
|
rescue Importer::ResponseError => e
|
|
90
80
|
::Rails.logger.error "Cloudflare::Rails: Couldn't import #{type} blocks from CloudFlare: #{e.response}"
|
|
91
81
|
rescue StandardError => e
|
|
92
|
-
::Rails.logger.error "Cloudflare::Rails: Got exception: #{e} for type
|
|
82
|
+
::Rails.logger.error "Cloudflare::Rails: Got exception: #{e} for type: #{type}"
|
|
93
83
|
end
|
|
94
84
|
end
|
|
95
85
|
end
|
|
86
|
+
initializer "my_railtie.configure_rails_initialization" do
|
|
87
|
+
Rack::Request::Helpers.prepend CheckTrustedProxies
|
|
88
|
+
|
|
89
|
+
ObjectSpace.each_object(Class).
|
|
90
|
+
select do |c|
|
|
91
|
+
c.included_modules.include?(Rack::Request::Helpers) &&
|
|
92
|
+
!c.included_modules.include?(CheckTrustedProxies)
|
|
93
|
+
end.
|
|
94
|
+
map { |c| c .prepend CheckTrustedProxies }
|
|
95
|
+
|
|
96
|
+
ActionDispatch::RemoteIp.prepend RemoteIpProxies
|
|
97
|
+
end
|
|
96
98
|
end
|
|
97
99
|
end
|
|
98
100
|
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:
|
|
4
|
+
version: 1.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- jonathan schatz
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-02-03 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -16,28 +16,28 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
19
|
+
version: 2.1.2
|
|
20
20
|
type: :development
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version:
|
|
26
|
+
version: 2.1.2
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: rake
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
31
|
- - "~>"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
33
|
+
version: 13.0.1
|
|
34
34
|
type: :development
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
38
|
- - "~>"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
40
|
+
version: 13.0.1
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: rspec_junit_formatter
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -58,70 +58,70 @@ dependencies:
|
|
|
58
58
|
requirements:
|
|
59
59
|
- - "~>"
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version:
|
|
61
|
+
version: 4.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:
|
|
68
|
+
version: 4.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.
|
|
75
|
+
version: 3.10.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.
|
|
82
|
+
version: 3.10.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:
|
|
89
|
+
version: 3.0.2
|
|
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:
|
|
96
|
+
version: 3.0.2
|
|
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.
|
|
103
|
+
version: 3.11.0
|
|
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.
|
|
110
|
+
version: 3.11.0
|
|
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.
|
|
117
|
+
version: 6.4.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.
|
|
124
|
+
version: 6.4.0
|
|
125
125
|
- !ruby/object:Gem::Dependency
|
|
126
126
|
name: pry-byebug
|
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -136,6 +136,20 @@ dependencies:
|
|
|
136
136
|
- - ">="
|
|
137
137
|
- !ruby/object:Gem::Version
|
|
138
138
|
version: '0'
|
|
139
|
+
- !ruby/object:Gem::Dependency
|
|
140
|
+
name: appraisal
|
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
|
142
|
+
requirements:
|
|
143
|
+
- - ">="
|
|
144
|
+
- !ruby/object:Gem::Version
|
|
145
|
+
version: '0'
|
|
146
|
+
type: :development
|
|
147
|
+
prerelease: false
|
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
+
requirements:
|
|
150
|
+
- - ">="
|
|
151
|
+
- !ruby/object:Gem::Version
|
|
152
|
+
version: '0'
|
|
139
153
|
- !ruby/object:Gem::Dependency
|
|
140
154
|
name: httparty
|
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -154,16 +168,22 @@ dependencies:
|
|
|
154
168
|
name: rails
|
|
155
169
|
requirement: !ruby/object:Gem::Requirement
|
|
156
170
|
requirements:
|
|
157
|
-
- - "
|
|
171
|
+
- - ">="
|
|
158
172
|
- !ruby/object:Gem::Version
|
|
159
173
|
version: '5.0'
|
|
174
|
+
- - "<"
|
|
175
|
+
- !ruby/object:Gem::Version
|
|
176
|
+
version: 6.2.0
|
|
160
177
|
type: :runtime
|
|
161
178
|
prerelease: false
|
|
162
179
|
version_requirements: !ruby/object:Gem::Requirement
|
|
163
180
|
requirements:
|
|
164
|
-
- - "
|
|
181
|
+
- - ">="
|
|
165
182
|
- !ruby/object:Gem::Version
|
|
166
183
|
version: '5.0'
|
|
184
|
+
- - "<"
|
|
185
|
+
- !ruby/object:Gem::Version
|
|
186
|
+
version: 6.2.0
|
|
167
187
|
description: ''
|
|
168
188
|
email:
|
|
169
189
|
- modosc@users.noreply.github.com
|
|
@@ -172,12 +192,15 @@ extensions: []
|
|
|
172
192
|
extra_rdoc_files: []
|
|
173
193
|
files:
|
|
174
194
|
- ".circleci/config.yml"
|
|
195
|
+
- ".github/dependabot.yml"
|
|
175
196
|
- ".gitignore"
|
|
176
197
|
- ".rspec"
|
|
177
198
|
- ".rubocop.yml"
|
|
178
199
|
- ".rubocop_airbnb.yml"
|
|
179
200
|
- ".rubocop_todo.yml"
|
|
180
201
|
- ".travis.yml"
|
|
202
|
+
- Appraisals
|
|
203
|
+
- CHANGELOG.md
|
|
181
204
|
- Gemfile
|
|
182
205
|
- LICENSE
|
|
183
206
|
- README.md
|
|
@@ -185,6 +208,12 @@ files:
|
|
|
185
208
|
- bin/console
|
|
186
209
|
- bin/setup
|
|
187
210
|
- cloudflare-rails.gemspec
|
|
211
|
+
- gemfiles/.bundle/config
|
|
212
|
+
- gemfiles/rails_5.0.gemfile
|
|
213
|
+
- gemfiles/rails_5.1.gemfile
|
|
214
|
+
- gemfiles/rails_5.2.gemfile
|
|
215
|
+
- gemfiles/rails_6.0.gemfile
|
|
216
|
+
- gemfiles/rails_6.1.gemfile
|
|
188
217
|
- lib/cloudflare/rails.rb
|
|
189
218
|
- lib/cloudflare/rails/railtie.rb
|
|
190
219
|
- lib/cloudflare/rails/version.rb
|
|
@@ -192,7 +221,7 @@ homepage: https://github.com/modosc/cloudflare-rails
|
|
|
192
221
|
licenses:
|
|
193
222
|
- MIT
|
|
194
223
|
metadata: {}
|
|
195
|
-
post_install_message:
|
|
224
|
+
post_install_message:
|
|
196
225
|
rdoc_options: []
|
|
197
226
|
require_paths:
|
|
198
227
|
- lib
|
|
@@ -207,8 +236,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
207
236
|
- !ruby/object:Gem::Version
|
|
208
237
|
version: '0'
|
|
209
238
|
requirements: []
|
|
210
|
-
rubygems_version: 3.
|
|
211
|
-
signing_key:
|
|
239
|
+
rubygems_version: 3.1.2
|
|
240
|
+
signing_key:
|
|
212
241
|
specification_version: 4
|
|
213
242
|
summary: This gem configures Rails for CloudFlare so that request.ip and request.remote_ip
|
|
214
243
|
and work correctly.
|