cloudflare-rails 0.3.0 → 0.4.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
- SHA1:
3
- metadata.gz: 1225ba25a51c6f0b3d5ba48801e6527272e35d3f
4
- data.tar.gz: f446b188758165beea703630fe96be0a864d90d2
2
+ SHA256:
3
+ metadata.gz: 4af88462102fa96a7026865456538d3273dbed25b27571be2a1ff35d85a571d0
4
+ data.tar.gz: d0822418ace7ea370d89465cfae344ee03915bde1cd1fa6509474608f2262c30
5
5
  SHA512:
6
- metadata.gz: 309f497551c826237d548f206854315f2d2fcca80290a543c30d6cfaa8a1f8b3e43a71a19d823e39c04447d4087cdc9d3b726d94fdbde2fa73d15a6bfcbff739
7
- data.tar.gz: d8aa9f9ddd5ad98c8da10358be8338670d71ee2571a6ba5d360e61fd2aa98b17fc1c664dec28918b1cbe90313880780d6f7dea295a3fbd1d0a818deed150be09
6
+ metadata.gz: cb376a89e2afe44c37d7dcacfa983ed7654d9be50aab5a110527003d3433a75935ed0988cea31a4b90dd6c9bbef99ee6ff080de548fe40ad511c422e1972684e
7
+ data.tar.gz: 16fed68fb3b86e05da7317208544bb26b51271848e93b159db064ec220264f2e8efae9de0e1fd6ad9063ed572364155e73f26860586738abb66c243a5d55dfbc
@@ -0,0 +1,57 @@
1
+ # Ruby CircleCI 2.0 configuration file
2
+ #
3
+ # Check https://circleci.com/docs/2.0/language-ruby/ for more details
4
+ #
5
+ version: 2
6
+ jobs:
7
+ build:
8
+ docker:
9
+ # specify the version you desire here
10
+ - image: circleci/ruby:2.5.1
11
+
12
+ # Specify service dependencies here if necessary
13
+ # CircleCI maintains a library of pre-built images
14
+ # documented at https://circleci.com/docs/2.0/circleci-images/
15
+ # - image: circleci/postgres:9.4
16
+
17
+ working_directory: ~/repo
18
+
19
+ steps:
20
+ - checkout
21
+
22
+ # Download and cache dependencies
23
+ - restore_cache:
24
+ keys:
25
+ - v1-dependencies-{{ checksum "cloudflare-rails.gemspec" }}
26
+ # fallback to using the latest cache if no exact match is found
27
+ - v1-dependencies-
28
+
29
+ - run:
30
+ name: install dependencies
31
+ command: |
32
+ bundle install --jobs=4 --retry=3 --path vendor/bundle
33
+
34
+ - save_cache:
35
+ paths:
36
+ - ./vendor/bundle
37
+ key: v1-dependencies-{{ checksum "Gemfile.lock" }}
38
+
39
+ # run tests!
40
+ - run:
41
+ name: run tests
42
+ command: |
43
+ mkdir /tmp/test-results
44
+ TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | circleci tests split --split-by=timings)"
45
+
46
+ bundle exec rspec --format progress \
47
+ --format RspecJunitFormatter \
48
+ --out /tmp/test-results/rspec.xml \
49
+ --format progress \
50
+ $TEST_FILES
51
+
52
+ # collect reports
53
+ - store_test_results:
54
+ path: /tmp/test-results
55
+ - store_artifacts:
56
+ path: /tmp/test-results
57
+ destination: test-results
@@ -0,0 +1,5 @@
1
+ inherit_from:
2
+ - .rubocop_airbnb.yml
3
+ - .rubocop_todo.yml
4
+ AllCops:
5
+ TargetRubyVersion: 2.4
@@ -0,0 +1,2 @@
1
+ require:
2
+ - rubocop-airbnb
@@ -0,0 +1,39 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2018-06-03 21:15:22 -0700 using RuboCop version 0.52.1.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 4
10
+ # Cop supports --auto-correct.
11
+ Layout/MultilineBlockLayout:
12
+ Exclude:
13
+ - 'spec/cloudflare/rails_spec.rb'
14
+
15
+ # Offense count: 4
16
+ # Cop supports --auto-correct.
17
+ # Configuration parameters: EnforcedStyle, EnforcedStyleForEmptyBraces, SpaceBeforeBlockParameters.
18
+ # SupportedStyles: space, no_space
19
+ # SupportedStylesForEmptyBraces: space, no_space
20
+ Layout/SpaceInsideBlockBraces:
21
+ Exclude:
22
+ - 'spec/cloudflare/rails_spec.rb'
23
+
24
+ # Offense count: 4
25
+ # Cop supports --auto-correct.
26
+ # Configuration parameters: EnforcedStyle, ProceduralMethods, FunctionalMethods, IgnoredMethods.
27
+ # SupportedStyles: line_count_based, semantic, braces_for_chaining
28
+ # ProceduralMethods: benchmark, bm, bmbm, create, each_with_object, measure, new, realtime, tap, with_object
29
+ # FunctionalMethods: let, let!, subject, watch
30
+ # IgnoredMethods: lambda, proc, it
31
+ Style/BlockDelimiters:
32
+ Exclude:
33
+ - 'spec/cloudflare/rails_spec.rb'
34
+
35
+ # Offense count: 6
36
+ # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
37
+ # URISchemes: http, https
38
+ Metrics/LineLength:
39
+ Max: 126
data/README.md CHANGED
@@ -1,12 +1,11 @@
1
- # Cloudflare::Rails [![Gem Version](https://badge.fury.io/rb/cloudflare-rails.svg)](https://badge.fury.io/rb/cloudflare-rails)
2
-
1
+ # Cloudflare::Rails [![Gem Version](https://badge.fury.io/rb/cloudflare-rails.svg)](https://badge.fury.io/rb/cloudflare-rails) [![CircleCI](https://circleci.com/gh/modosc/cloudflare-rails/tree/master.svg?style=shield)](https://circleci.com/gh/modosc/cloudflare-rails/tree/master)
3
2
  This gem correctly configures Rails for [CloudFlare](https://www.cloudflare.com) so that `request.remote_ip` / `request.ip` both work correctly.
4
3
 
5
4
  ## Rails Compatibility
6
5
 
7
- For Rails 5, use 0.2.x
6
+ For Rails 5, use >= `0.2.x`
8
7
 
9
- For Rails 4.2, use 0.1.x
8
+ For Rails 4.2, use `0.1.x`
10
9
 
11
10
  ## Installation
12
11
 
@@ -31,7 +30,7 @@ This code will fetch CloudFlare's current [IPv4](https://www.cloudflare.com/ips-
31
30
  You can configure the HTTP `timeout` and `expires_in` cache parameters inside of your rails config:
32
31
  ```
33
32
  config.cloudflare.expires_in = 12.hours # default value
34
- config.cloudfalre.timeout = 5.seconds # default value
33
+ config.cloudflare.timeout = 5.seconds # default value
35
34
  ```
36
35
 
37
36
  ## Alternatives
@@ -1,4 +1,5 @@
1
1
  # coding: utf-8
2
+
2
3
  lib = File.expand_path('../lib', __FILE__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'cloudflare/rails/version'
@@ -20,13 +21,16 @@ Gem::Specification.new do |spec|
20
21
  spec.require_paths = ["lib"]
21
22
 
22
23
  spec.add_development_dependency "bundler", "~> 1.10"
23
- spec.add_development_dependency "rake", "~> 10.0"
24
- spec.add_development_dependency "rspec"
25
- spec.add_development_dependency "rspec-rails"
26
- spec.add_development_dependency "webmock"
24
+ spec.add_development_dependency "rake", "~> 12.3.1"
25
+ spec.add_development_dependency "rspec_junit_formatter", "~> 0.4.1"
26
+ spec.add_development_dependency "rspec-rails", "~> 3.7.2"
27
+ spec.add_development_dependency "rspec", "~> 3.7.0"
28
+ spec.add_development_dependency "rubocop-airbnb", "~> 1.0.0"
29
+ spec.add_development_dependency "webmock", "~> 3.4.2"
27
30
 
31
+ spec.add_dependency "httparty"
28
32
  spec.add_dependency "rails", "~> 5.0"
29
- spec.add_dependency 'httparty'
33
+
30
34
 
31
35
  # we need Module#prepend
32
36
  spec.required_ruby_version = '>= 2.0'
@@ -3,8 +3,6 @@ require "httparty"
3
3
 
4
4
  module Cloudflare
5
5
  module Rails
6
-
7
-
8
6
  end
9
7
  end
10
8
 
@@ -3,12 +3,11 @@ require "httparty"
3
3
  module Cloudflare
4
4
  module Rails
5
5
  class Railtie < ::Rails::Railtie
6
-
7
6
  # patch rack::request::helpers to use our cloudflare ips - this way request.ip is
8
7
  # correct inside of rack and rails
9
8
  module CheckTrustedProxies
10
9
  def trusted_proxy?(ip)
11
- ::Rails.application.config.cloudflare.ips.any?{ |proxy| proxy === ip } || super
10
+ ::Rails.application.config.cloudflare.ips.any? { |proxy| proxy === ip } || super
12
11
  end
13
12
  end
14
13
 
@@ -17,7 +16,6 @@ module Cloudflare
17
16
  # patch ActionDispatch::RemoteIP to use our cloudflare ips - this way
18
17
  # request.remote_ip is correct inside of rails
19
18
  module RemoteIpProxies
20
-
21
19
  def proxies
22
20
  super + ::Rails.application.config.cloudflare.ips
23
21
  end
@@ -33,8 +31,8 @@ module Cloudflare
33
31
 
34
32
  class ResponseError < HTTParty::ResponseError; end
35
33
 
36
- IPS_V4_URL = '/ips-v4'
37
- IPS_V6_URL = '/ips-v6'
34
+ IPS_V4_URL = '/ips-v4'.freeze
35
+ IPS_V6_URL = '/ips-v6'.freeze
38
36
 
39
37
  class << self
40
38
  def ips_v6
@@ -48,19 +46,17 @@ module Cloudflare
48
46
  def fetch(url)
49
47
  resp = get url, timeout: ::Rails.application.config.cloudflare.timeout
50
48
  if resp.success?
51
- resp.body.split("\n").reject(&:blank?).map{|ip| IPAddr.new ip}
49
+ resp.body.split("\n").reject(&:blank?).map { |ip| IPAddr.new ip }
52
50
  else
53
- raise ResponseError.new(resp.response)
51
+ raise ResponseError, resp.response
54
52
  end
55
53
  end
56
54
 
57
55
  def fetch_with_cache(type)
58
56
  ::Rails.cache.fetch("cloudflare-rails:#{type}", expires_in: ::Rails.application.config.cloudflare.expires_in) do
59
- self.send type
57
+ send type
60
58
  end
61
59
  end
62
-
63
-
64
60
  end
65
61
  end
66
62
 
@@ -68,8 +64,8 @@ module Cloudflare
68
64
  DEFAULTS = {
69
65
  expires_in: 12.hours,
70
66
  timeout: 5.seconds,
71
- ips: Array.new
72
- }
67
+ ips: [],
68
+ }.freeze
73
69
 
74
70
  config.before_configuration do |app|
75
71
  app.config.cloudflare = ActiveSupport::OrderedOptions.new
@@ -89,7 +85,6 @@ module Cloudflare
89
85
  ::Rails.logger.error "Cloudflare::Rails: Got exception: #{e} for type:#{type}"
90
86
  end
91
87
  end
92
-
93
88
  end
94
89
  end
95
90
  end
@@ -1,5 +1,5 @@
1
1
  module Cloudflare
2
2
  module Rails
3
- VERSION = "0.3.0"
3
+ VERSION = "0.4.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: 0.3.0
4
+ version: 0.4.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: 2017-09-28 00:00:00.000000000 Z
11
+ date: 2018-06-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,70 +30,84 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: 12.3.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: '10.0'
40
+ version: 12.3.1
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: rspec_junit_formatter
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 0.4.1
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'
54
+ version: 0.4.1
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: '0'
61
+ version: 3.7.2
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: '0'
68
+ version: 3.7.2
69
69
  - !ruby/object:Gem::Dependency
70
- name: webmock
70
+ name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0'
75
+ version: 3.7.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: '0'
82
+ version: 3.7.0
83
83
  - !ruby/object:Gem::Dependency
84
- name: rails
84
+ name: rubocop-airbnb
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '5.0'
90
- type: :runtime
89
+ version: 1.0.0
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: '5.0'
96
+ version: 1.0.0
97
+ - !ruby/object:Gem::Dependency
98
+ name: webmock
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 3.4.2
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 3.4.2
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: httparty
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -108,6 +122,20 @@ dependencies:
108
122
  - - ">="
109
123
  - !ruby/object:Gem::Version
110
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rails
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '5.0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '5.0'
111
139
  description: ''
112
140
  email:
113
141
  - modosc@users.noreply.github.com
@@ -115,8 +143,12 @@ executables: []
115
143
  extensions: []
116
144
  extra_rdoc_files: []
117
145
  files:
146
+ - ".circleci/config.yml"
118
147
  - ".gitignore"
119
148
  - ".rspec"
149
+ - ".rubocop.yml"
150
+ - ".rubocop_airbnb.yml"
151
+ - ".rubocop_todo.yml"
120
152
  - ".travis.yml"
121
153
  - Gemfile
122
154
  - LICENSE
@@ -148,7 +180,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
180
  version: '0'
149
181
  requirements: []
150
182
  rubyforge_project:
151
- rubygems_version: 2.6.11
183
+ rubygems_version: 2.7.6
152
184
  signing_key:
153
185
  specification_version: 4
154
186
  summary: This gem configures Rails for CloudFlare so that request.ip and request.remote_ip