psenv 0.3.0 → 0.8.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: 22c36df5755de3776968d07be71a0d52516dd735
4
- data.tar.gz: 640960bf9362a799a8fb9949e254ce1e8ba0170b
2
+ SHA256:
3
+ metadata.gz: 95068b4608673d5fbdf66f5a71969f7caf4ed2c1a9c96055afe728e9e4873a49
4
+ data.tar.gz: 61ff9ffd8ebde74cf8bcaf7a03f1dbc71981d93fb1702b0e44ec2f0f9f91df13
5
5
  SHA512:
6
- metadata.gz: b5af830d42d9d7439de2fc669d1f4e1cf6cb71179f423bae3045e97c9a2a686fd14c9bb1d3170302be0ff49093938d76080e2766957b5afaa93c910036273ca5
7
- data.tar.gz: 59cf8d38ed1633b8bd617597a2c510af40b0e67c06dac909137ea51507925f38e71cf635b01646872251152124e4a6ff03ca5284e22d08d04fb3be10a6545fa7
6
+ metadata.gz: 2fab2133154b2cae69583ca13ff7c888cd3ff2d4c52730ab39ce2561dfcd76f3a74683d16902244b01c122aebf55683358184cd58b50feade49388309c56201a
7
+ data.tar.gz: f04c8b12451ce63a948eb3db9c9b07a67b662bd4a8ae18a4fbdef2c5642c5e440a18e06d9dff2d936e459706a2c35c4ccf69cb4b53b316c4ea93e74ed1781510
@@ -0,0 +1,59 @@
1
+ name: Ruby
2
+
3
+ on: [push]
4
+
5
+ jobs:
6
+ lint:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - uses: actions/checkout@v1
10
+ - name: Set up Ruby 2.7
11
+ uses: ruby/setup-ruby@v1
12
+ with:
13
+ ruby-version: 2.7
14
+ - name: Build and test with Rake
15
+ run: |
16
+ gem install bundler
17
+ bundle install --jobs 4 --retry 3
18
+ bundle exec standardrb
19
+
20
+ test:
21
+ runs-on: ubuntu-latest
22
+ strategy:
23
+ matrix:
24
+ ruby_version: [2.4, 2.5, 2.6, 2.7, 3.0]
25
+
26
+ steps:
27
+ - uses: actions/checkout@v1
28
+ - name: Set up Ruby ${{ matrix.ruby_version }}
29
+ uses: ruby/setup-ruby@v1
30
+ with:
31
+ ruby-version: ${{ matrix.ruby_version }}
32
+ - name: Build and test with Rake
33
+ run: |
34
+ gem install bundler
35
+ bundle install --jobs 4 --retry 3
36
+ bundle exec rspec
37
+
38
+ rails:
39
+ runs-on: ubuntu-latest
40
+ strategy:
41
+ matrix:
42
+ ruby_version: [2.5, 2.6, 2.7, 3.0]
43
+ steps:
44
+ - uses: actions/checkout@v1
45
+ - name: Set up Ruby ${{ matrix.ruby_version }}
46
+ uses: ruby/setup-ruby@v1
47
+ with:
48
+ ruby-version: ${{ matrix.ruby_version }}
49
+ - name: Test gem in Rails application
50
+ run: |
51
+ cd spec/rails
52
+ gem install bundler
53
+ bundle install --jobs 4 --retry 3
54
+ bundle exec rails test
55
+ env:
56
+ AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
57
+ AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
58
+ AWS_DEFAULT_REGION: us-east-2
59
+ PARAMETER_STORE_PATH: /psenv/test/
data/.gitignore CHANGED
@@ -9,3 +9,5 @@
9
9
 
10
10
  # rspec failure tracking
11
11
  .rspec_status
12
+
13
+ Gemfile.lock
data/README.md CHANGED
@@ -1,10 +1,8 @@
1
1
  # Psenv
2
2
 
3
- **Work in progress**
4
-
5
3
  Shim to load environment variables from [AWS Systems Manager Parameter Store](https://aws.amazon.com/systems-manager/features/#Parameter_Store) into ENV.
6
4
 
7
- Psenv currently heavily borrows from [Dotenv](https://github.com/bkeepers/dotenv), mainly because I use it in roughly every project so it made since for the APIs to match.
5
+ Psenv currently heavily borrows from [Dotenv](https://github.com/bkeepers/dotenv), mainly because I use it in roughly every project so it made sense for the APIs to match.
8
6
 
9
7
  ## Installation
10
8
 
@@ -23,6 +21,26 @@ And then execute:
23
21
  Set the `PARAMETER_STORE_PATH` environment variable with the AWS Parameter
24
22
  Store path that you wish to load.
25
23
 
24
+ #### Spring preloader
25
+
26
+ The Spring preloader does not detect environment variable changes as
27
+ application changes. This means that when using Spring, new or changed
28
+ environment variables from AWS SSM Parameter Store will not become available
29
+ immediately. This also applies to any change to `PARAMETER_STORE_PATH`.
30
+
31
+ There are two work-arounds. You can force Spring to restart by killing it with
32
+ `bundle exec spring stop`.
33
+
34
+ Alternatively, you can update your Spring configuration to reload variables
35
+ using Psenv after the process forks. To do this, add the following configuration
36
+ to `config/spring.rb`:
37
+
38
+ ```
39
+ Spring.after_fork do
40
+ Psenv.load
41
+ end
42
+ ```
43
+
26
44
  ### Plain Ruby
27
45
 
28
46
  Add this line to your application's Gemfile:
data/Rakefile CHANGED
@@ -1,17 +1,20 @@
1
1
  require "bundler/gem_helper"
2
2
  require "rspec/core/rake_task"
3
+ require "rubocop/rake_task"
4
+
5
+ class ParameterStoreEnvRailsGemHelper < Bundler::GemHelper
6
+ def guard_already_tagged
7
+ end
8
+
9
+ def tag_version
10
+ end
11
+ end
3
12
 
4
13
  namespace "psenv" do
5
14
  Bundler::GemHelper.install_tasks name: "psenv"
6
15
  end
7
16
 
8
17
  namespace "psenv-rails" do
9
- class ParameterStoreEnvRailsGemHelper < Bundler::GemHelper
10
- def guard_already_tagged; end
11
-
12
- def tag_version; end
13
- end
14
-
15
18
  ParameterStoreEnvRailsGemHelper.install_tasks name: "psenv-rails"
16
19
  end
17
20
 
@@ -20,5 +23,6 @@ task install: ["psenv:install", "psenv-rails:install"]
20
23
  task release: ["psenv:release", "psenv-rails:release"]
21
24
 
22
25
  RSpec::Core::RakeTask.new(:spec)
26
+ RuboCop::RakeTask.new(:rubocop)
23
27
 
24
- task default: :spec
28
+ task default: %i[rubocop spec]
@@ -6,7 +6,7 @@ module Psenv
6
6
 
7
7
  def apply
8
8
  @variables.each do |k, v|
9
- ENV.store(k.to_s, v) unless ENV.has_key?(k.to_s)
9
+ ENV.store(k.to_s, v) unless ENV.key?(k.to_s)
10
10
  end
11
11
  end
12
12
 
@@ -20,11 +20,10 @@ module Psenv
20
20
  end
21
21
 
22
22
  def call
23
- Hash[
24
- parameters.
25
- map { |parameter| Parameter.new(parameter) }.
26
- map { |parameter| [parameter.name, parameter.value] }
27
- ]
23
+ parameters
24
+ .map { |parameter| Parameter.new(parameter) }
25
+ .map { |parameter| [parameter.name, parameter.value] }
26
+ .to_h
28
27
  end
29
28
 
30
29
  def self.call(path)
@@ -38,10 +37,17 @@ module Psenv
38
37
  end
39
38
 
40
39
  def parameters
41
- ssm.
42
- get_parameters_by_path(path: @path, with_decryption: true).
43
- parameters
44
- rescue StandardError => error
40
+ parameters = []
41
+ response = ssm.get_parameters_by_path(path: @path, with_decryption: true)
42
+ parameters << response.parameters
43
+
44
+ while response.next_page?
45
+ response = response.next_page
46
+ parameters << response.parameters
47
+ end
48
+
49
+ parameters.flatten
50
+ rescue => error
45
51
  raise RetrieveError, error
46
52
  end
47
53
  end
data/lib/psenv/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Psenv
2
- VERSION = "0.3.0".freeze
2
+ VERSION = "0.8.0".freeze
3
3
  end
data/psenv-rails.gemspec CHANGED
@@ -1,27 +1,26 @@
1
-
2
1
  lib = File.expand_path("lib", __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require "psenv/version"
5
4
 
6
5
  Gem::Specification.new do |spec|
7
- spec.name = "psenv-rails"
8
- spec.version = Psenv::VERSION
9
- spec.authors = ["Andrew Tomaka"]
10
- spec.email = ["atomaka@gmail.com"]
6
+ spec.name = "psenv-rails"
7
+ spec.version = Psenv::VERSION
8
+ spec.authors = ["Andrew Tomaka"]
9
+ spec.email = ["atomaka@gmail.com"]
11
10
 
12
- spec.summary = "Load AWS SSM Parameter Store values into your Rails environment."
13
- spec.homepage = "https://github.com/atomaka/psenv"
14
- spec.license = "MIT"
11
+ spec.summary = "Load AWS SSM Parameter Store values into your Rails environment."
12
+ spec.homepage = "https://github.com/atomaka/psenv"
13
+ spec.license = "MIT"
15
14
 
16
- spec.files = `git ls-files lib | grep rails`.
17
- split($OUTPUT_RECORD_SEPARATOR).
18
- reject do |f|
15
+ spec.files = `git ls-files lib | grep rails`
16
+ .split($OUTPUT_RECORD_SEPARATOR)
17
+ .reject do |f|
19
18
  f.match(%r{^(test|spec|features)/})
20
19
  end + ["README.md", "LICENSE.txt"]
21
- spec.bindir = "exe"
22
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
+ spec.bindir = "exe"
21
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
22
  spec.require_paths = ["lib"]
24
23
 
25
24
  spec.add_dependency "psenv", Psenv::VERSION
26
- spec.add_dependency "railties", ">= 3.2", "< 5.3"
25
+ spec.add_dependency "railties", ">= 3.2", "< 6.2"
27
26
  end
data/psenv.gemspec CHANGED
@@ -1,30 +1,28 @@
1
-
2
1
  lib = File.expand_path("lib", __dir__)
3
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
3
  require "psenv/version"
5
4
 
6
5
  Gem::Specification.new do |spec|
7
- spec.name = "psenv"
8
- spec.version = Psenv::VERSION
9
- spec.authors = ["Andrew Tomaka"]
10
- spec.email = ["atomaka@gmail.com"]
6
+ spec.name = "psenv"
7
+ spec.version = Psenv::VERSION
8
+ spec.authors = ["Andrew Tomaka"]
9
+ spec.email = ["atomaka@gmail.com"]
11
10
 
12
- spec.summary = "Load AWS SSM Parameter Store values into your environment."
13
- spec.homepage = "https://github.com/atomaka/psenv"
14
- spec.license = "MIT"
11
+ spec.summary = "Load AWS SSM Parameter Store values into your environment."
12
+ spec.homepage = "https://github.com/atomaka/psenv"
13
+ spec.license = "MIT"
15
14
 
16
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
15
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
16
  f.match(%r{^(test|spec|features)/})
18
17
  end
19
- spec.bindir = "exe"
20
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
18
+ spec.bindir = "exe"
19
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
20
  spec.require_paths = ["lib"]
22
21
 
23
- spec.add_development_dependency "bundler", "~> 1.16"
24
22
  spec.add_development_dependency "pry"
25
- spec.add_development_dependency "rake", "~> 10.0"
26
- spec.add_development_dependency "rspec", "~> 3.0"
27
- spec.add_development_dependency "rubocop", "0.54"
23
+ spec.add_development_dependency "rake", ">= 12.3.3"
24
+ spec.add_development_dependency "rspec", "~> 3"
25
+ spec.add_development_dependency "standard"
28
26
  spec.add_development_dependency "webmock", "~> 3.3"
29
27
 
30
28
  spec.add_dependency "aws-sdk-ssm", "~> 1"
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: psenv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Tomaka
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-04-10 00:00:00.000000000 Z
11
+ date: 2021-10-23 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: bundler
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '1.16'
20
- type: :development
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - "~>"
25
- - !ruby/object:Gem::Version
26
- version: '1.16'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: pry
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -42,44 +28,44 @@ dependencies:
42
28
  name: rake
43
29
  requirement: !ruby/object:Gem::Requirement
44
30
  requirements:
45
- - - "~>"
31
+ - - ">="
46
32
  - !ruby/object:Gem::Version
47
- version: '10.0'
33
+ version: 12.3.3
48
34
  type: :development
49
35
  prerelease: false
50
36
  version_requirements: !ruby/object:Gem::Requirement
51
37
  requirements:
52
- - - "~>"
38
+ - - ">="
53
39
  - !ruby/object:Gem::Version
54
- version: '10.0'
40
+ version: 12.3.3
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: rspec
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - "~>"
60
46
  - !ruby/object:Gem::Version
61
- version: '3.0'
47
+ version: '3'
62
48
  type: :development
63
49
  prerelease: false
64
50
  version_requirements: !ruby/object:Gem::Requirement
65
51
  requirements:
66
52
  - - "~>"
67
53
  - !ruby/object:Gem::Version
68
- version: '3.0'
54
+ version: '3'
69
55
  - !ruby/object:Gem::Dependency
70
- name: rubocop
56
+ name: standard
71
57
  requirement: !ruby/object:Gem::Requirement
72
58
  requirements:
73
- - - '='
59
+ - - ">="
74
60
  - !ruby/object:Gem::Version
75
- version: '0.54'
61
+ version: '0'
76
62
  type: :development
77
63
  prerelease: false
78
64
  version_requirements: !ruby/object:Gem::Requirement
79
65
  requirements:
80
- - - '='
66
+ - - ">="
81
67
  - !ruby/object:Gem::Version
82
- version: '0.54'
68
+ version: '0'
83
69
  - !ruby/object:Gem::Dependency
84
70
  name: webmock
85
71
  requirement: !ruby/object:Gem::Requirement
@@ -108,19 +94,17 @@ dependencies:
108
94
  - - "~>"
109
95
  - !ruby/object:Gem::Version
110
96
  version: '1'
111
- description:
97
+ description:
112
98
  email:
113
99
  - atomaka@gmail.com
114
100
  executables: []
115
101
  extensions: []
116
102
  extra_rdoc_files: []
117
103
  files:
104
+ - ".github/workflows/ruby.yml"
118
105
  - ".gitignore"
119
106
  - ".rspec"
120
- - ".rubocop.yml"
121
- - ".travis.yml"
122
107
  - Gemfile
123
- - Gemfile.lock
124
108
  - LICENSE.txt
125
109
  - README.md
126
110
  - Rakefile
@@ -137,7 +121,7 @@ homepage: https://github.com/atomaka/psenv
137
121
  licenses:
138
122
  - MIT
139
123
  metadata: {}
140
- post_install_message:
124
+ post_install_message:
141
125
  rdoc_options: []
142
126
  require_paths:
143
127
  - lib
@@ -152,9 +136,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
152
136
  - !ruby/object:Gem::Version
153
137
  version: '0'
154
138
  requirements: []
155
- rubyforge_project:
156
- rubygems_version: 2.6.13
157
- signing_key:
139
+ rubygems_version: 3.2.22
140
+ signing_key:
158
141
  specification_version: 4
159
142
  summary: Load AWS SSM Parameter Store values into your environment.
160
143
  test_files: []
data/.rubocop.yml DELETED
@@ -1,654 +0,0 @@
1
- AllCops:
2
- Exclude:
3
- - db/schema.rb
4
- - vendor/**/*
5
-
6
- Metrics/LineLength:
7
- Description: 'Limit lines to 80 characters.'
8
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#80-character-limits'
9
- Max: 80
10
- Exclude:
11
- - ./*.gemspec
12
-
13
-
14
- Naming/AccessorMethodName:
15
- Description: Check the naming of accessor methods for get_/set_.
16
- Enabled: false
17
-
18
- Style/Alias:
19
- Description: 'Use alias_method instead of alias.'
20
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#alias-method'
21
- Enabled: false
22
-
23
- Style/ArrayJoin:
24
- Description: 'Use Array#join instead of Array#*.'
25
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#array-join'
26
- Enabled: false
27
-
28
- Style/AsciiComments:
29
- Description: 'Use only ascii symbols in comments.'
30
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#english-comments'
31
- Enabled: false
32
-
33
- Naming/AsciiIdentifiers:
34
- Description: 'Use only ascii symbols in identifiers.'
35
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#english-identifiers'
36
- Enabled: false
37
-
38
- Style/Attr:
39
- Description: 'Checks for uses of Module#attr.'
40
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#attr'
41
- Enabled: false
42
-
43
- Metrics/BlockNesting:
44
- Description: 'Avoid excessive block nesting'
45
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#three-is-the-number-thou-shalt-count'
46
- Enabled: false
47
-
48
- Style/CaseEquality:
49
- Description: 'Avoid explicit use of the case equality operator(===).'
50
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-case-equality'
51
- Enabled: false
52
-
53
- Style/CharacterLiteral:
54
- Description: 'Checks for uses of character literals.'
55
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-character-literals'
56
- Enabled: false
57
-
58
- Style/ClassAndModuleChildren:
59
- Description: 'Checks style of children classes and modules.'
60
- Enabled: true
61
- EnforcedStyle: nested
62
-
63
- Metrics/ClassLength:
64
- Description: 'Avoid classes longer than 100 lines of code.'
65
- Enabled: false
66
-
67
- Metrics/ModuleLength:
68
- Description: 'Avoid modules longer than 100 lines of code.'
69
- Enabled: false
70
-
71
- Style/ClassVars:
72
- Description: 'Avoid the use of class variables.'
73
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-class-vars'
74
- Enabled: false
75
-
76
- Style/CollectionMethods:
77
- Enabled: true
78
- PreferredMethods:
79
- find: detect
80
- inject: reduce
81
- collect: map
82
- find_all: select
83
-
84
- Style/ColonMethodCall:
85
- Description: 'Do not use :: for method call.'
86
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#double-colons'
87
- Enabled: false
88
-
89
- Style/CommentAnnotation:
90
- Description: >-
91
- Checks formatting of special comments
92
- (TODO, FIXME, OPTIMIZE, HACK, REVIEW).
93
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#annotate-keywords'
94
- Enabled: false
95
-
96
- Metrics/AbcSize:
97
- Description: >-
98
- A calculated magnitude based on number of assignments,
99
- branches, and conditions.
100
- Enabled: false
101
-
102
- Metrics/BlockLength:
103
- CountComments: true # count full line comments?
104
- Max: 25
105
- ExcludedMethods: []
106
- Exclude:
107
- - "spec/**/*"
108
-
109
- Metrics/CyclomaticComplexity:
110
- Description: >-
111
- A complexity metric that is strongly correlated to the number
112
- of test cases needed to validate a method.
113
- Enabled: false
114
-
115
- Rails/Delegate:
116
- Description: 'Prefer delegate method for delegations.'
117
- Enabled: false
118
-
119
- Style/PreferredHashMethods:
120
- Description: 'Checks use of `has_key?` and `has_value?` Hash methods.'
121
- StyleGuide: '#hash-key'
122
- Enabled: false
123
-
124
- Style/Documentation:
125
- Description: 'Document classes and non-namespace modules.'
126
- Enabled: false
127
-
128
- Style/DoubleNegation:
129
- Description: 'Checks for uses of double negation (!!).'
130
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-bang-bang'
131
- Enabled: false
132
-
133
- Style/EachWithObject:
134
- Description: 'Prefer `each_with_object` over `inject` or `reduce`.'
135
- Enabled: false
136
-
137
- Style/EmptyLiteral:
138
- Description: 'Prefer literals to Array.new/Hash.new/String.new.'
139
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#literal-array-hash'
140
- Enabled: false
141
-
142
- # Checks whether the source file has a utf-8 encoding comment or not
143
- # AutoCorrectEncodingComment must match the regex
144
- # /#.*coding\s?[:=]\s?(?:UTF|utf)-8/
145
- Style/Encoding:
146
- Enabled: false
147
-
148
- Style/EvenOdd:
149
- Description: 'Favor the use of Fixnum#even? && Fixnum#odd?'
150
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#predicate-methods'
151
- Enabled: false
152
-
153
- Naming/FileName:
154
- Description: 'Use snake_case for source file names.'
155
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#snake-case-files'
156
- Enabled: false
157
-
158
- Style/FrozenStringLiteralComment:
159
- Description: >-
160
- Add the frozen_string_literal comment to the top of files
161
- to help transition from Ruby 2.3.0 to Ruby 3.0.
162
- Enabled: false
163
-
164
- Style/FlipFlop:
165
- Description: 'Checks for flip flops'
166
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-flip-flops'
167
- Enabled: false
168
-
169
- Style/FormatString:
170
- Description: 'Enforce the use of Kernel#sprintf, Kernel#format or String#%.'
171
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#sprintf'
172
- Enabled: false
173
-
174
- Style/GlobalVars:
175
- Description: 'Do not introduce global variables.'
176
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#instance-vars'
177
- Reference: 'http://www.zenspider.com/Languages/Ruby/QuickRef.html'
178
- Enabled: false
179
-
180
- Style/GuardClause:
181
- Description: 'Check for conditionals that can be replaced with guard clauses'
182
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals'
183
- Enabled: false
184
-
185
- Style/IfUnlessModifier:
186
- Description: >-
187
- Favor modifier if/unless usage when you have a
188
- single-line body.
189
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#if-as-a-modifier'
190
- Enabled: false
191
-
192
- Style/IfWithSemicolon:
193
- Description: 'Do not use if x; .... Use the ternary operator instead.'
194
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-semicolon-ifs'
195
- Enabled: false
196
-
197
- Style/InlineComment:
198
- Description: 'Avoid inline comments.'
199
- Enabled: false
200
-
201
- Style/Lambda:
202
- Description: 'Use the new lambda literal syntax for single-line blocks.'
203
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#lambda-multi-line'
204
- Enabled: false
205
-
206
- Style/LambdaCall:
207
- Description: 'Use lambda.call(...) instead of lambda.(...).'
208
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#proc-call'
209
- Enabled: false
210
-
211
- Style/LineEndConcatenation:
212
- Description: >-
213
- Use \ instead of + or << to concatenate two string literals at
214
- line end.
215
- Enabled: false
216
-
217
- Metrics/MethodLength:
218
- Description: 'Avoid methods longer than 10 lines of code.'
219
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#short-methods'
220
- Enabled: false
221
-
222
- Style/ModuleFunction:
223
- Description: 'Checks for usage of `extend self` in modules.'
224
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#module-function'
225
- Enabled: false
226
-
227
- Style/MultilineBlockChain:
228
- Description: 'Avoid multi-line chains of blocks.'
229
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#single-line-blocks'
230
- Enabled: false
231
-
232
- Style/NegatedIf:
233
- Description: >-
234
- Favor unless over if for negative conditions
235
- (or control flow or).
236
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#unless-for-negatives'
237
- Enabled: false
238
-
239
- Style/NegatedWhile:
240
- Description: 'Favor until over while for negative conditions.'
241
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#until-for-negatives'
242
- Enabled: false
243
-
244
- Style/Next:
245
- Description: 'Use `next` to skip iteration instead of a condition at the end.'
246
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-conditionals'
247
- Enabled: false
248
-
249
- Style/NilComparison:
250
- Description: 'Prefer x.nil? to x == nil.'
251
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#predicate-methods'
252
- Enabled: false
253
-
254
- Style/Not:
255
- Description: 'Use ! instead of not.'
256
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#bang-not-not'
257
- Enabled: false
258
-
259
- Style/NumericLiterals:
260
- Description: >-
261
- Add underscores to large numeric literals to improve their
262
- readability.
263
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#underscores-in-numerics'
264
- Enabled: false
265
-
266
- Style/OneLineConditional:
267
- Description: >-
268
- Favor the ternary operator(?:) over
269
- if/then/else/end constructs.
270
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#ternary-operator'
271
- Enabled: false
272
-
273
- Naming/BinaryOperatorParameterName:
274
- Description: 'When defining binary operators, name the argument other.'
275
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#other-arg'
276
- Enabled: false
277
-
278
- Metrics/ParameterLists:
279
- Description: 'Avoid parameter lists longer than three or four parameters.'
280
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#too-many-params'
281
- Enabled: false
282
-
283
- Style/PercentLiteralDelimiters:
284
- Description: 'Use `%`-literal delimiters consistently'
285
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-literal-braces'
286
- Enabled: false
287
-
288
- Style/PerlBackrefs:
289
- Description: 'Avoid Perl-style regex back references.'
290
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-perl-regexp-last-matchers'
291
- Enabled: false
292
-
293
- Naming/PredicateName:
294
- Description: 'Check the names of predicate methods.'
295
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#bool-methods-qmark'
296
- NamePrefixBlacklist:
297
- - is_
298
- Exclude:
299
- - spec/**/*
300
-
301
- Style/Proc:
302
- Description: 'Use proc instead of Proc.new.'
303
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#proc'
304
- Enabled: false
305
-
306
- Style/RaiseArgs:
307
- Description: 'Checks the arguments passed to raise/fail.'
308
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#exception-class-messages'
309
- Enabled: false
310
-
311
- Style/RegexpLiteral:
312
- Description: 'Use / or %r around regular expressions.'
313
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-r'
314
- Enabled: false
315
-
316
- Style/SelfAssignment:
317
- Description: >-
318
- Checks for places where self-assignment shorthand should have
319
- been used.
320
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#self-assignment'
321
- Enabled: false
322
-
323
- Style/SingleLineBlockParams:
324
- Description: 'Enforces the names of some block params.'
325
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#reduce-blocks'
326
- Enabled: false
327
-
328
- Style/SingleLineMethods:
329
- Description: 'Avoid single-line methods.'
330
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-single-line-methods'
331
- Enabled: false
332
-
333
- Style/SignalException:
334
- Description: 'Checks for proper usage of fail and raise.'
335
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#fail-method'
336
- Enabled: false
337
-
338
- Style/SpecialGlobalVars:
339
- Description: 'Avoid Perl-style global variables.'
340
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-cryptic-perlisms'
341
- Enabled: false
342
-
343
- Style/StringLiterals:
344
- Description: 'Checks if uses of quotes match the configured preference.'
345
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#consistent-string-literals'
346
- EnforcedStyle: double_quotes
347
- Enabled: true
348
-
349
- Style/TrailingCommaInArguments:
350
- Description: 'Checks for trailing comma in argument lists.'
351
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas'
352
- EnforcedStyleForMultiline: comma
353
- SupportedStylesForMultiline:
354
- - comma
355
- - consistent_comma
356
- - no_comma
357
- Enabled: true
358
-
359
- Style/TrailingCommaInArrayLiteral:
360
- Description: 'Checks for trailing comma in array literals.'
361
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas'
362
- EnforcedStyleForMultiline: comma
363
- SupportedStylesForMultiline:
364
- - comma
365
- - consistent_comma
366
- - no_comma
367
- Enabled: true
368
-
369
- Style/TrailingCommaInHashLiteral:
370
- Description: 'Checks for trailing comma in hash literals.'
371
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas'
372
- EnforcedStyleForMultiline: comma
373
- SupportedStylesForMultiline:
374
- - comma
375
- - consistent_comma
376
- - no_comma
377
- Enabled: true
378
-
379
- Style/TrivialAccessors:
380
- Description: 'Prefer attr_* methods to trivial readers/writers.'
381
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#attr_family'
382
- Enabled: false
383
-
384
- Style/VariableInterpolation:
385
- Description: >-
386
- Don't interpolate global, instance and class variables
387
- directly in strings.
388
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#curlies-interpolate'
389
- Enabled: false
390
-
391
- Style/WhenThen:
392
- Description: 'Use when x then ... for one-line cases.'
393
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#one-line-cases'
394
- Enabled: false
395
-
396
- Style/WhileUntilModifier:
397
- Description: >-
398
- Favor modifier while/until usage when you have a
399
- single-line body.
400
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#while-as-a-modifier'
401
- Enabled: false
402
-
403
- Style/WordArray:
404
- Description: 'Use %w or %W for arrays of words.'
405
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#percent-w'
406
- Enabled: false
407
-
408
- # Layout
409
-
410
- Layout/AlignParameters:
411
- Description: 'Here we check if the parameters on a multi-line method call or definition are aligned.'
412
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-double-indent'
413
- Enabled: false
414
-
415
- Layout/ConditionPosition:
416
- Description: >-
417
- Checks for condition placed in a confusing position relative to
418
- the keyword.
419
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#same-line-condition'
420
- Enabled: false
421
-
422
- Layout/DotPosition:
423
- Description: 'Checks the position of the dot in multi-line method calls.'
424
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#consistent-multi-line-chains'
425
- EnforcedStyle: trailing
426
-
427
- Layout/ExtraSpacing:
428
- Description: 'Do not use unnecessary spacing.'
429
- Enabled: true
430
-
431
- Layout/MultilineOperationIndentation:
432
- Description: >-
433
- Checks indentation of binary operations that span more than
434
- one line.
435
- Enabled: true
436
- EnforcedStyle: indented
437
-
438
- Layout/MultilineMethodCallIndentation:
439
- Description: >-
440
- Checks indentation of method calls with the dot operator
441
- that span more than one line.
442
- Enabled: true
443
- EnforcedStyle: indented
444
-
445
- Layout/InitialIndentation:
446
- Description: >-
447
- Checks the indentation of the first non-blank non-comment line in a file.
448
- Enabled: false
449
-
450
- # Lint
451
-
452
- Lint/AmbiguousOperator:
453
- Description: >-
454
- Checks for ambiguous operators in the first argument of a
455
- method invocation without parentheses.
456
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#parens-as-args'
457
- Enabled: false
458
-
459
- Lint/AmbiguousRegexpLiteral:
460
- Description: >-
461
- Checks for ambiguous regexp literals in the first argument of
462
- a method invocation without parenthesis.
463
- Enabled: false
464
-
465
- Lint/AssignmentInCondition:
466
- Description: "Don't use assignment in conditions."
467
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#safe-assignment-in-condition'
468
- Enabled: false
469
-
470
- Lint/CircularArgumentReference:
471
- Description: "Don't refer to the keyword argument in the default value."
472
- Enabled: false
473
-
474
- Lint/DeprecatedClassMethods:
475
- Description: 'Check for deprecated class method calls.'
476
- Enabled: false
477
-
478
- Lint/DuplicatedKey:
479
- Description: 'Check for duplicate keys in hash literals.'
480
- Enabled: false
481
-
482
- Lint/EachWithObjectArgument:
483
- Description: 'Check for immutable argument given to each_with_object.'
484
- Enabled: false
485
-
486
- Lint/ElseLayout:
487
- Description: 'Check for odd code arrangement in an else block.'
488
- Enabled: false
489
-
490
- Lint/FormatParameterMismatch:
491
- Description: 'The number of parameters to format/sprint must match the fields.'
492
- Enabled: false
493
-
494
- Lint/HandleExceptions:
495
- Description: "Don't suppress exception."
496
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#dont-hide-exceptions'
497
- Enabled: false
498
-
499
- Lint/LiteralAsCondition:
500
- Description: 'Checks of literals used in conditions.'
501
- Enabled: false
502
-
503
- Lint/LiteralInInterpolation:
504
- Description: 'Checks for literals used in interpolation.'
505
- Enabled: false
506
-
507
- Lint/Loop:
508
- Description: >-
509
- Use Kernel#loop with break rather than begin/end/until or
510
- begin/end/while for post-loop tests.
511
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#loop-with-break'
512
- Enabled: false
513
-
514
- Lint/NestedMethodDefinition:
515
- Description: 'Do not use nested method definitions.'
516
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#no-nested-methods'
517
- Enabled: false
518
-
519
- Lint/NonLocalExitFromIterator:
520
- Description: 'Do not use return in iterator to cause non-local exit.'
521
- Enabled: false
522
-
523
- Lint/ParenthesesAsGroupedExpression:
524
- Description: >-
525
- Checks for method calls with a space before the opening
526
- parenthesis.
527
- StyleGuide: 'https://github.com/bbatsov/ruby-style-guide#parens-no-spaces'
528
- Enabled: false
529
-
530
- Lint/RequireParentheses:
531
- Description: >-
532
- Use parentheses in the method call to avoid confusion
533
- about precedence.
534
- Enabled: false
535
-
536
- Lint/UnderscorePrefixedVariableName:
537
- Description: 'Do not use prefix `_` for a variable that is used.'
538
- Enabled: false
539
-
540
- Lint/UnneededCopDisableDirective:
541
- Description: >-
542
- Checks for rubocop:disable comments that can be removed.
543
- Note: this cop is not disabled when disabling all cops.
544
- It must be explicitly disabled.
545
- Enabled: false
546
-
547
- Lint/Void:
548
- Description: 'Possible use of operator/literal/variable in void context.'
549
- Enabled: false
550
-
551
- # Performance
552
-
553
- Performance/CaseWhenSplat:
554
- Description: >-
555
- Place `when` conditions that use splat at the end
556
- of the list of `when` branches.
557
- Enabled: false
558
-
559
- Performance/Count:
560
- Description: >-
561
- Use `count` instead of `select...size`, `reject...size`,
562
- `select...count`, `reject...count`, `select...length`,
563
- and `reject...length`.
564
- Enabled: false
565
-
566
- Performance/Detect:
567
- Description: >-
568
- Use `detect` instead of `select.first`, `find_all.first`,
569
- `select.last`, and `find_all.last`.
570
- Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerabledetect-vs-enumerableselectfirst-code'
571
- Enabled: false
572
-
573
- Performance/FlatMap:
574
- Description: >-
575
- Use `Enumerable#flat_map`
576
- instead of `Enumerable#map...Array#flatten(1)`
577
- or `Enumberable#collect..Array#flatten(1)`
578
- Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablemaparrayflatten-vs-enumerableflat_map-code'
579
- Enabled: false
580
-
581
- Performance/ReverseEach:
582
- Description: 'Use `reverse_each` instead of `reverse.each`.'
583
- Reference: 'https://github.com/JuanitoFatas/fast-ruby#enumerablereverseeach-vs-enumerablereverse_each-code'
584
- Enabled: false
585
-
586
- Performance/Sample:
587
- Description: >-
588
- Use `sample` instead of `shuffle.first`,
589
- `shuffle.last`, and `shuffle[Fixnum]`.
590
- Reference: 'https://github.com/JuanitoFatas/fast-ruby#arrayshufflefirst-vs-arraysample-code'
591
- Enabled: false
592
-
593
- Performance/Size:
594
- Description: >-
595
- Use `size` instead of `count` for counting
596
- the number of elements in `Array` and `Hash`.
597
- Reference: 'https://github.com/JuanitoFatas/fast-ruby#arraycount-vs-arraysize-code'
598
- Enabled: false
599
-
600
- Performance/StringReplacement:
601
- Description: >-
602
- Use `tr` instead of `gsub` when you are replacing the same
603
- number of characters. Use `delete` instead of `gsub` when
604
- you are deleting characters.
605
- Reference: 'https://github.com/JuanitoFatas/fast-ruby#stringgsub-vs-stringtr-code'
606
- Enabled: false
607
-
608
- # Rails
609
-
610
- Rails/ActionFilter:
611
- Description: 'Enforces consistent use of action filter methods.'
612
- Enabled: false
613
-
614
- Rails/Date:
615
- Description: >-
616
- Checks the correct usage of date aware methods,
617
- such as Date.today, Date.current etc.
618
- Enabled: false
619
-
620
- Rails/FindBy:
621
- Description: 'Prefer find_by over where.first.'
622
- Enabled: false
623
-
624
- Rails/FindEach:
625
- Description: 'Prefer all.find_each over all.find.'
626
- Enabled: false
627
-
628
- Rails/HasAndBelongsToMany:
629
- Description: 'Prefer has_many :through to has_and_belongs_to_many.'
630
- Enabled: false
631
-
632
- Rails/Output:
633
- Description: 'Checks for calls to puts, print, etc.'
634
- Enabled: false
635
-
636
- Rails/ReadWriteAttribute:
637
- Description: >-
638
- Checks for read_attribute(:attr) and
639
- write_attribute(:attr, val).
640
- Enabled: false
641
-
642
- Rails/ScopeArgs:
643
- Description: 'Checks the arguments of ActiveRecord scopes.'
644
- Enabled: false
645
-
646
- Rails/TimeZone:
647
- Description: 'Checks the correct usage of time zone aware methods.'
648
- StyleGuide: 'https://github.com/bbatsov/rails-style-guide#time'
649
- Reference: 'http://danilenko.org/2012/7/6/rails_timezones'
650
- Enabled: false
651
-
652
- Rails/Validation:
653
- Description: 'Use validates :attribute, hash of validations.'
654
- Enabled: false
data/.travis.yml DELETED
@@ -1,13 +0,0 @@
1
- sudo: false
2
- cache: bundler
3
- language: ruby
4
- rvm:
5
- - 2.4.2
6
- before_install: gem install bundler -v 1.16.1
7
-
8
- jobs:
9
- include:
10
- - stage: analyze
11
- script: bundle exec rubocop
12
- - stage: test
13
- script: bundle exec rspec
data/Gemfile.lock DELETED
@@ -1,133 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- psenv (0.3.0)
5
- aws-sdk-ssm (~> 1)
6
- psenv-rails (0.3.0)
7
- psenv (= 0.3.0)
8
- railties (>= 3.2, < 5.3)
9
-
10
- GEM
11
- remote: https://rubygems.org/
12
- specs:
13
- actionpack (5.2.0)
14
- actionview (= 5.2.0)
15
- activesupport (= 5.2.0)
16
- rack (~> 2.0)
17
- rack-test (>= 0.6.3)
18
- rails-dom-testing (~> 2.0)
19
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
20
- actionview (5.2.0)
21
- activesupport (= 5.2.0)
22
- builder (~> 3.1)
23
- erubi (~> 1.4)
24
- rails-dom-testing (~> 2.0)
25
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
26
- activesupport (5.2.0)
27
- concurrent-ruby (~> 1.0, >= 1.0.2)
28
- i18n (>= 0.7, < 2)
29
- minitest (~> 5.1)
30
- tzinfo (~> 1.1)
31
- addressable (2.5.2)
32
- public_suffix (>= 2.0.2, < 4.0)
33
- ast (2.4.0)
34
- aws-partitions (1.79.0)
35
- aws-sdk-core (3.19.0)
36
- aws-partitions (~> 1.0)
37
- aws-sigv4 (~> 1.0)
38
- jmespath (~> 1.0)
39
- aws-sdk-ssm (1.10.0)
40
- aws-sdk-core (~> 3)
41
- aws-sigv4 (~> 1.0)
42
- aws-sigv4 (1.0.2)
43
- builder (3.2.3)
44
- coderay (1.1.2)
45
- concurrent-ruby (1.0.5)
46
- crack (0.4.3)
47
- safe_yaml (~> 1.0.0)
48
- crass (1.0.4)
49
- diff-lcs (1.3)
50
- erubi (1.7.1)
51
- hashdiff (0.3.7)
52
- i18n (1.0.0)
53
- concurrent-ruby (~> 1.0)
54
- jmespath (1.4.0)
55
- loofah (2.2.2)
56
- crass (~> 1.0.2)
57
- nokogiri (>= 1.5.9)
58
- method_source (0.9.0)
59
- mini_portile2 (2.3.0)
60
- minitest (5.11.3)
61
- nokogiri (1.8.2)
62
- mini_portile2 (~> 2.3.0)
63
- parallel (1.12.1)
64
- parser (2.5.0.5)
65
- ast (~> 2.4.0)
66
- powerpack (0.1.1)
67
- pry (0.11.3)
68
- coderay (~> 1.1.0)
69
- method_source (~> 0.9.0)
70
- public_suffix (3.0.2)
71
- rack (2.0.4)
72
- rack-test (1.0.0)
73
- rack (>= 1.0, < 3)
74
- rails-dom-testing (2.0.3)
75
- activesupport (>= 4.2.0)
76
- nokogiri (>= 1.6)
77
- rails-html-sanitizer (1.0.4)
78
- loofah (~> 2.2, >= 2.2.2)
79
- railties (5.2.0)
80
- actionpack (= 5.2.0)
81
- activesupport (= 5.2.0)
82
- method_source
83
- rake (>= 0.8.7)
84
- thor (>= 0.18.1, < 2.0)
85
- rainbow (3.0.0)
86
- rake (10.5.0)
87
- rspec (3.7.0)
88
- rspec-core (~> 3.7.0)
89
- rspec-expectations (~> 3.7.0)
90
- rspec-mocks (~> 3.7.0)
91
- rspec-core (3.7.1)
92
- rspec-support (~> 3.7.0)
93
- rspec-expectations (3.7.0)
94
- diff-lcs (>= 1.2.0, < 2.0)
95
- rspec-support (~> 3.7.0)
96
- rspec-mocks (3.7.0)
97
- diff-lcs (>= 1.2.0, < 2.0)
98
- rspec-support (~> 3.7.0)
99
- rspec-support (3.7.1)
100
- rubocop (0.54.0)
101
- parallel (~> 1.10)
102
- parser (>= 2.5)
103
- powerpack (~> 0.1)
104
- rainbow (>= 2.2.2, < 4.0)
105
- ruby-progressbar (~> 1.7)
106
- unicode-display_width (~> 1.0, >= 1.0.1)
107
- ruby-progressbar (1.9.0)
108
- safe_yaml (1.0.4)
109
- thor (0.20.0)
110
- thread_safe (0.3.6)
111
- tzinfo (1.2.5)
112
- thread_safe (~> 0.1)
113
- unicode-display_width (1.3.0)
114
- webmock (3.3.0)
115
- addressable (>= 2.3.6)
116
- crack (>= 0.3.2)
117
- hashdiff
118
-
119
- PLATFORMS
120
- ruby
121
-
122
- DEPENDENCIES
123
- bundler (~> 1.16)
124
- pry
125
- psenv!
126
- psenv-rails!
127
- rake (~> 10.0)
128
- rspec (~> 3.0)
129
- rubocop (= 0.54)
130
- webmock (~> 3.3)
131
-
132
- BUNDLED WITH
133
- 1.16.1