cloudflare-rails 0.3.0 → 0.4.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
- 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