moderate_parameters 0.1.1 → 0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1a3dab509d7471d97c25322b1998d917fdb04b41993a53b4550fe80b47bfcf51
4
- data.tar.gz: 8e0cf544739a1ac9ad0c2153a231b4edafcff7ddc86ca861a3622673a4da1eca
3
+ metadata.gz: 025154d5fcf0e85640487bb165610bc71b9c57337bdc38f6dfb6180e5446a66a
4
+ data.tar.gz: 4e6ddfbc51cd37e463e01fee38b4ab167c9c391aeb2d5e3674ef5624c5dac353
5
5
  SHA512:
6
- metadata.gz: c511925780bb70b27d3654ed9c13cbc41806b05bf8e6bcb2f6d5a154e5f66cd78c75afad4b43ea8df38edab3199d3d2549876e24ecc857340a8964d589d4811a
7
- data.tar.gz: 3c0bb1b989d4b5bc20709d36854823050a0f28912fd098ecb4b8d96f279364dab02b1dc45200a3aea5dc0ebe2767599c172908ec6860b90ff50bc802183a83c0
6
+ metadata.gz: 9785b2538bfec4f143b9acfe1391f696e95e43bb4e837cc030a7669f1cf5c920157a0035aa8fa8ee7b9c3363712d8b71bac623b5f518fe529b8778e0c7246627
7
+ data.tar.gz: 53d7b1d10bff242410ca415b4f3e2c3aefa11eada31c7db50c1c4b3dd9dfa90e0a52ed1bccb88e52b20097bd330eacca811e10d4fe1d268345b8a69150506191
@@ -0,0 +1,70 @@
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.6.1
11
+ environment:
12
+ BUNDLE_JOBS: 3
13
+ BUNDLE_RETRY: 3
14
+ BUNDLE_PATH: vendor/bundle
15
+ RAILS_ENV: test
16
+
17
+ # Specify service dependencies here if necessary
18
+ # CircleCI maintains a library of pre-built images
19
+ # documented at https://circleci.com/docs/2.0/circleci-images/
20
+ # - image: circleci/postgres:9.4
21
+
22
+ working_directory: ~/repo
23
+
24
+ steps:
25
+ - checkout
26
+ # Download and cache dependencies
27
+ - restore_cache:
28
+ keys:
29
+ - v1-dependencies-{{ checksum "Gemfile.lock" }}
30
+ # fallback to using the latest cache if no exact match is found
31
+ - v1-dependencies-
32
+
33
+ - run:
34
+ name: Configure Bundler
35
+ command: |
36
+ echo 'export BUNDLER_VERSION=$(cat Gemfile.lock | tail -1 | tr -d " ")' >> $BASH_ENV
37
+ source $BASH_ENV
38
+ gem install bundler
39
+
40
+ - run:
41
+ name: install dependencies
42
+ command: |
43
+ bundle install --jobs=4 --retry=3 --path vendor/bundle
44
+
45
+ - save_cache:
46
+ paths:
47
+ - ./vendor/bundle
48
+ key: v1-dependencies-{{ checksum "Gemfile.lock" }}
49
+
50
+ # run tests!
51
+ - run:
52
+ name: run tests
53
+ command: |
54
+ mkdir /tmp/test-results
55
+ TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | \
56
+ circleci tests split --split-by=timings)"
57
+
58
+ bundle exec rspec \
59
+ --format progress \
60
+ --format RspecJunitFormatter \
61
+ --out /tmp/test-results/rspec.xml \
62
+ --format progress \
63
+ $TEST_FILES
64
+
65
+ # collect reports
66
+ - store_test_results:
67
+ path: /tmp/test-results
68
+ - store_artifacts:
69
+ path: /tmp/test-results
70
+ destination: test-results
data/.rubocop.yml ADDED
@@ -0,0 +1,4 @@
1
+ Metrics/BlockLength:
2
+ Exclude:
3
+ - 'spec/**/*'
4
+ - 'moderate_parameters.gemspec'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- moderate_parameters (0.1.0)
4
+ moderate_parameters (0.1.1)
5
5
  actionpack (>= 3.0, < 6.1)
6
6
  activemodel (>= 3.0, < 6.1)
7
7
  activesupport (>= 3.0, < 6.1)
@@ -10,32 +10,33 @@ PATH
10
10
  GEM
11
11
  remote: https://rubygems.org/
12
12
  specs:
13
- actionpack (5.2.3)
14
- actionview (= 5.2.3)
15
- activesupport (= 5.2.3)
13
+ actionpack (6.0.0)
14
+ actionview (= 6.0.0)
15
+ activesupport (= 6.0.0)
16
16
  rack (~> 2.0)
17
17
  rack-test (>= 0.6.3)
18
18
  rails-dom-testing (~> 2.0)
19
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
20
- actionview (5.2.3)
21
- activesupport (= 5.2.3)
19
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
20
+ actionview (6.0.0)
21
+ activesupport (= 6.0.0)
22
22
  builder (~> 3.1)
23
23
  erubi (~> 1.4)
24
24
  rails-dom-testing (~> 2.0)
25
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
26
- activemodel (5.2.3)
27
- activesupport (= 5.2.3)
28
- activesupport (5.2.3)
25
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
26
+ activemodel (6.0.0)
27
+ activesupport (= 6.0.0)
28
+ activesupport (6.0.0)
29
29
  concurrent-ruby (~> 1.0, >= 1.0.2)
30
30
  i18n (>= 0.7, < 2)
31
31
  minitest (~> 5.1)
32
32
  tzinfo (~> 1.1)
33
+ zeitwerk (~> 2.1, >= 2.1.8)
33
34
  builder (3.2.3)
34
35
  coderay (1.1.2)
35
36
  concurrent-ruby (1.1.5)
36
37
  crass (1.0.4)
37
38
  diff-lcs (1.3)
38
- erubi (1.8.0)
39
+ erubi (1.9.0)
39
40
  i18n (1.6.0)
40
41
  concurrent-ruby (~> 1.0)
41
42
  loofah (2.2.3)
@@ -43,7 +44,7 @@ GEM
43
44
  nokogiri (>= 1.5.9)
44
45
  method_source (0.9.2)
45
46
  mini_portile2 (2.4.0)
46
- minitest (5.11.3)
47
+ minitest (5.12.0)
47
48
  nokogiri (1.10.4)
48
49
  mini_portile2 (~> 2.4.0)
49
50
  pry (0.12.2)
@@ -55,32 +56,35 @@ GEM
55
56
  rails-dom-testing (2.0.3)
56
57
  activesupport (>= 4.2.0)
57
58
  nokogiri (>= 1.6)
58
- rails-html-sanitizer (1.0.4)
59
+ rails-html-sanitizer (1.2.0)
59
60
  loofah (~> 2.2, >= 2.2.2)
60
- railties (5.2.3)
61
- actionpack (= 5.2.3)
62
- activesupport (= 5.2.3)
61
+ railties (6.0.0)
62
+ actionpack (= 6.0.0)
63
+ activesupport (= 6.0.0)
63
64
  method_source
64
65
  rake (>= 0.8.7)
65
- thor (>= 0.19.0, < 2.0)
66
+ thor (>= 0.20.3, < 2.0)
66
67
  rake (10.5.0)
67
68
  rspec (3.8.0)
68
69
  rspec-core (~> 3.8.0)
69
70
  rspec-expectations (~> 3.8.0)
70
71
  rspec-mocks (~> 3.8.0)
71
- rspec-core (3.8.0)
72
+ rspec-core (3.8.2)
72
73
  rspec-support (~> 3.8.0)
73
- rspec-expectations (3.8.2)
74
+ rspec-expectations (3.8.4)
74
75
  diff-lcs (>= 1.2.0, < 2.0)
75
76
  rspec-support (~> 3.8.0)
76
- rspec-mocks (3.8.0)
77
+ rspec-mocks (3.8.1)
77
78
  diff-lcs (>= 1.2.0, < 2.0)
78
79
  rspec-support (~> 3.8.0)
79
- rspec-support (3.8.0)
80
+ rspec-support (3.8.2)
81
+ rspec_junit_formatter (0.4.1)
82
+ rspec-core (>= 2, < 4, != 2.12.0)
80
83
  thor (0.20.3)
81
84
  thread_safe (0.3.6)
82
85
  tzinfo (1.2.5)
83
86
  thread_safe (~> 0.1)
87
+ zeitwerk (2.1.10)
84
88
 
85
89
  PLATFORMS
86
90
  ruby
@@ -91,6 +95,7 @@ DEPENDENCIES
91
95
  pry (~> 0.12.2)
92
96
  rake (~> 10.0)
93
97
  rspec (~> 3.0)
98
+ rspec_junit_formatter (= 0.4.1)
94
99
 
95
100
  BUNDLED WITH
96
101
  2.0.1
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails/generators/base'
4
+
5
+ module ModerateParameters
6
+ module Generators
7
+ class InstallGenerator < Rails::Generators::Base
8
+ source_root File.expand_path('../templates', __dir__)
9
+
10
+ desc 'Creates a ModerateParameters initializer.'
11
+
12
+ def copy_initializer
13
+ template 'moderate_parameters.rb', 'config/initializers/moderate_parameters.rb'
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ ModerateParameters.configure do |config|
4
+ # Enables/Disables logging occurrences of
5
+ # reading/writing from ActionController::Parameters.
6
+ config.breadcrumbs_enabled = false
7
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ModerateParameters
4
+ module Breadcrumbs
5
+ def [](key)
6
+ internal_param_logging(key, 'read', caller_locations) if ModerateParameters.breadcrumbs_enabled
7
+ super
8
+ end
9
+
10
+ def []=(key, value)
11
+ internal_param_logging(key, 'overwritten', caller_locations) if ModerateParameters.breadcrumbs_enabled
12
+ super
13
+ end
14
+
15
+ def extract!(*keys)
16
+ internal_method_logging('extract!', keys, caller_locations) if ModerateParameters.breadcrumbs_enabled
17
+ super
18
+ end
19
+
20
+ private
21
+
22
+ def internal_param_logging(key, action, stack_array)
23
+ ActiveSupport::Notifications.instrument('moderate_parameters') do |payload|
24
+ payload[:caller_locations] = stack_array
25
+ payload[:message] = "#{key} is being #{action} on: #{stack_array.join("\n")}"
26
+ end
27
+ end
28
+
29
+ def internal_method_logging(method, keys, stack_array)
30
+ ActiveSupport::Notifications.instrument('moderate_parameters') do |payload|
31
+ payload[:caller_locations] = stack_array
32
+ payload[:message] = "#{method} is being called with #{keys} on: #{stack_array.join("\n")}"
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- $moderate_parameters_logger = Logger.new('log/moderate_parameters.log')
3
+ $moderate_parameters_logger = ActiveSupport::Logger.new('log/moderate_parameters.log')
4
4
 
5
- ActiveSupport::Notifications.subscribe('moderate_parameters') do |name, start, finish, id, payload|
5
+ ActiveSupport::Notifications.subscribe('moderate_parameters') do |_, _, _, _, payload|
6
6
  $moderate_parameters_logger.info "#{payload[:controller]}##{payload[:action]} #{payload[:message]}"
7
7
  end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- module ActionController
4
- class Parameters
3
+ module ModerateParameters
4
+ module Parameters
5
5
  def moderate(controller_name, action, *filters)
6
6
  params = self.class.new
7
7
 
@@ -14,13 +14,13 @@ module ActionController
14
14
  end
15
15
  end
16
16
 
17
- custom_logging(params, controller_name, action)
17
+ incoming_params_logging(params, controller_name, action)
18
18
  permit!
19
19
  end
20
20
 
21
21
  private
22
22
 
23
- def custom_logging(params, controller_name, action)
23
+ def incoming_params_logging(params, controller_name, action)
24
24
  unpermitted_keys(params).each do |k|
25
25
  ActiveSupport::Notifications.instrument('moderate_parameters') do |payload|
26
26
  payload[:controller] = controller_name
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ModerateParameters
4
- VERSION = '0.1.1'
4
+ VERSION = '0.2.0'
5
5
  end
@@ -1,8 +1,24 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "moderate_parameters/version"
4
- require "moderate_parameters/logger"
5
- require "moderate_parameters/moderate_parameters"
3
+ require 'action_controller'
4
+ require 'active_support'
5
+ require 'moderate_parameters/version'
6
+ require 'moderate_parameters/logger'
7
+ require 'moderate_parameters/parameters'
8
+ require 'moderate_parameters/breadcrumbs'
6
9
 
7
10
  module ModerateParameters
11
+ mattr_accessor :breadcrumbs_enabled
12
+ @@breadcrumbs_enabled = false
13
+
14
+ def self.configure
15
+ yield self
16
+ end
17
+ end
18
+
19
+ module ActionController
20
+ class Parameters
21
+ prepend ModerateParameters::Breadcrumbs
22
+ prepend ModerateParameters::Parameters
23
+ end
8
24
  end
data/log/.gitkeep ADDED
File without changes
@@ -45,4 +45,5 @@ Gem::Specification.new do |spec|
45
45
  spec.add_development_dependency 'pry', '~> 0.12.2'
46
46
  spec.add_development_dependency 'rake', '~> 10.0'
47
47
  spec.add_development_dependency 'rspec', '~> 3.0'
48
+ spec.add_development_dependency 'rspec_junit_formatter', '0.4.1'
48
49
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moderate_parameters
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Boe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-26 00:00:00.000000000 Z
11
+ date: 2019-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
@@ -146,6 +146,20 @@ dependencies:
146
146
  - - "~>"
147
147
  - !ruby/object:Gem::Version
148
148
  version: '3.0'
149
+ - !ruby/object:Gem::Dependency
150
+ name: rspec_junit_formatter
151
+ requirement: !ruby/object:Gem::Requirement
152
+ requirements:
153
+ - - '='
154
+ - !ruby/object:Gem::Version
155
+ version: 0.4.1
156
+ type: :development
157
+ prerelease: false
158
+ version_requirements: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - '='
161
+ - !ruby/object:Gem::Version
162
+ version: 0.4.1
149
163
  description: A tool for migrating Rails applications from Protected Attributes to
150
164
  Strong Parameters.
151
165
  email:
@@ -156,9 +170,10 @@ executables:
156
170
  extensions: []
157
171
  extra_rdoc_files: []
158
172
  files:
173
+ - ".circleci/config.yml"
159
174
  - ".gitignore"
160
175
  - ".rspec"
161
- - ".travis.yml"
176
+ - ".rubocop.yml"
162
177
  - CHANGELOG.md
163
178
  - CODE_OF_CONDUCT.md
164
179
  - Gemfile
@@ -168,10 +183,14 @@ files:
168
183
  - Rakefile
169
184
  - bin/console
170
185
  - bin/setup
186
+ - lib/generators/moderate_parameters/install_generator.rb
187
+ - lib/generators/templates/moderate_parameters.rb
171
188
  - lib/moderate_parameters.rb
189
+ - lib/moderate_parameters/breadcrumbs.rb
172
190
  - lib/moderate_parameters/logger.rb
173
- - lib/moderate_parameters/moderate_parameters.rb
191
+ - lib/moderate_parameters/parameters.rb
174
192
  - lib/moderate_parameters/version.rb
193
+ - log/.gitkeep
175
194
  - moderate_parameters.gemspec
176
195
  homepage: https://github.com/hintmedia/moderate_parameters
177
196
  licenses:
data/.travis.yml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- sudo: false
3
- language: ruby
4
- cache: bundler
5
- rvm:
6
- - 2.6.0
7
- before_install: gem install bundler -v 1.17.2