environment_helpers 1.2.1 → 1.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 +4 -4
- data/.github/workflows/quality.yml +29 -0
- data/.github/workflows/rspec.yml +1 -1
- data/.mdl_rules.rb +2 -0
- data/.mdlrc +2 -0
- data/.quiet_quality.ci-cd.yml +7 -0
- data/.quiet_quality.yml +7 -0
- data/CHANGELOG.md +32 -0
- data/README.md +54 -35
- data/environment_helpers.gemspec +4 -1
- data/lib/environment_helpers/datetime_helpers.rb +42 -0
- data/lib/environment_helpers/enumerable_helpers.rb +44 -0
- data/lib/environment_helpers/version.rb +1 -1
- data/lib/environment_helpers.rb +5 -0
- metadata +53 -5
- data/.github/workflows/lint.yml +0 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 977bcb9a26d78cbddc4857274e59ed796d9454993fa5bc307c3643af08ed53e2
|
4
|
+
data.tar.gz: 4696a62fd389365b56c79e952a1f4ac947970483faf17122e21cc312a1eff2c4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1fca3efa7549d3464b174bb84fdaab9d5f0a6c150121d50cf715891eafcca4f097f24c2624f8cab10812260e0c1358928eac811cf299b232afd0a4971641f084
|
7
|
+
data.tar.gz: 2240bb669c7d0852c581b4ab0c0c343cdc1c1dece4da9b8b1d34c2b08658c9aa4e5a8ddfb6e6c864751ee4f6fd82d1ad351721213b005270faa233aa0f957a79
|
@@ -0,0 +1,29 @@
|
|
1
|
+
name: Quiet Quality
|
2
|
+
|
3
|
+
on: push
|
4
|
+
permissions: write-all
|
5
|
+
|
6
|
+
jobs:
|
7
|
+
check:
|
8
|
+
runs-on: ubuntu-latest
|
9
|
+
steps:
|
10
|
+
- uses: actions/checkout@v3
|
11
|
+
with:
|
12
|
+
fetch-depth: 0
|
13
|
+
|
14
|
+
- name: Show the merge-base
|
15
|
+
run: git merge-base origin/main ${{ github.sha }}
|
16
|
+
if: github.branch != 'main'
|
17
|
+
|
18
|
+
- name: Set up Ruby
|
19
|
+
uses: ruby/setup-ruby@v1
|
20
|
+
with:
|
21
|
+
ruby-version: 3.2
|
22
|
+
|
23
|
+
- name: Install gems
|
24
|
+
run: bundle install --jobs 4 --retry 3
|
25
|
+
|
26
|
+
- name: Run QuietQuality
|
27
|
+
run: |
|
28
|
+
gem install quiet_quality standard rubocop
|
29
|
+
qq -C .quiet_quality.ci-cd.yml
|
data/.github/workflows/rspec.yml
CHANGED
data/.mdl_rules.rb
ADDED
data/.mdlrc
ADDED
data/.quiet_quality.yml
ADDED
data/CHANGELOG.md
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
## Release 1.4.0
|
4
|
+
|
5
|
+
* Drop support for ruby 2.6
|
6
|
+
* Setup `quiet_quality` through the gemspec
|
7
|
+
* Setup `markdownlint` and comply with its rules (#25)
|
8
|
+
* Setup `rspec-cover_it` to enforce test-coverage (#24)
|
9
|
+
|
10
|
+
## Release 1.3.0
|
11
|
+
|
12
|
+
* Support `ENV.date_time` (#19, resolves #6)
|
13
|
+
|
14
|
+
## Release 1.2.1
|
15
|
+
|
16
|
+
* Require `set` before loading the gem, since we support rubies before 3.2 (#18)
|
17
|
+
|
18
|
+
## Release 1.2.0
|
19
|
+
|
20
|
+
* Support `ENV.file_path` returning Pathname objects (#16, resolves #13)
|
21
|
+
|
22
|
+
## Release 1.1.0
|
23
|
+
|
24
|
+
* Support `ENV.integer_range` (#15, resolves #5)
|
25
|
+
|
26
|
+
## Release 1.0.1
|
27
|
+
|
28
|
+
* Specify dependencies more tightly (#14)
|
29
|
+
|
30
|
+
## Release 1.0.0
|
31
|
+
|
32
|
+
(Initial release)
|
data/README.md
CHANGED
@@ -1,36 +1,40 @@
|
|
1
1
|
# EnvironmentHelpers
|
2
|
-
This gem adds a set of convenience helpers to `ENV`, allowing you to access environment variables
|
3
|
-
in a more structures and consistent way. Have you seen any line like these?
|
4
2
|
|
5
|
-
|
3
|
+
This gem adds a set of convenience helpers to `ENV`, allowing you to access
|
4
|
+
environment variables in a more structures and consistent way. Have you seen
|
5
|
+
any line like these?
|
6
|
+
|
7
|
+
```ruby
|
6
8
|
enable_bar = ENV.fetch("ENABLE_BAR", "false") == "true"
|
7
9
|
foo_count = ENV.fetch("FOO_TOTAL", "100").to_i
|
8
10
|
```
|
9
11
|
|
10
|
-
This works okay! And it's not really that complicated, working out what's going
|
11
|
-
that difficult. How about this?
|
12
|
+
This works okay! And it's not really that complicated, working out what's going
|
13
|
+
on here isn't that difficult. How about this?
|
12
14
|
|
13
|
-
```
|
15
|
+
```ruby
|
14
16
|
enable_foo = ENV.fetch("ENABLE_FOO", "false") != "true"
|
15
17
|
```
|
16
18
|
|
17
|
-
That.. looks very similar, but means the opposite thing. Also not that tricky.
|
18
|
-
to _wish_ for a tool like EnvironmentHelpers until these
|
19
|
-
But.. if you're using a 12-factor
|
20
|
-
|
19
|
+
That.. looks very similar, but means the opposite thing. Also not that tricky.
|
20
|
+
You don't start to _wish_ for a tool like EnvironmentHelpers until these
|
21
|
+
constructions get complex and compounded. But.. if you're using a 12-factor
|
22
|
+
style of configuration, you probably have these ENV-fetches sprinkled
|
23
|
+
_everywhere_, so making them moderately clearer or simpler can pay off fairly
|
24
|
+
quickly.
|
21
25
|
|
22
26
|
## Installation
|
23
27
|
|
24
|
-
```
|
28
|
+
```ruby
|
25
29
|
gem "environment_helper"
|
26
30
|
```
|
27
31
|
|
28
|
-
There's not much to it - add the gem to your gemfile and when it's loaded it'll
|
29
|
-
methods onto `ENV` for your use.
|
32
|
+
There's not much to it - add the gem to your gemfile and when it's loaded it'll
|
33
|
+
add some extra methods onto `ENV` for your use.
|
30
34
|
|
31
35
|
## Usage
|
32
36
|
|
33
|
-
```
|
37
|
+
```ruby
|
34
38
|
ENV.string("APP_NAME", default: "local")
|
35
39
|
ENV.symbol("BUSINESS_DOMAIN", default: :engineering, required: true)
|
36
40
|
ENV.boolean("ENABLE_FEATURE_FOO", default: false)
|
@@ -38,29 +42,44 @@ ENV.integer_range("ID_RANGE", default: (500..6000))
|
|
38
42
|
ENV.integer("MAX_THREAD_COUNT", default: 5)
|
39
43
|
ENV.file_path("FILE_PATH", default: "/some/path", required: true)
|
40
44
|
ENV.date("SCHEDULED_DATE", required: true, format: "%Y-%m-%d")
|
45
|
+
ENV.date_time("RUN_AT", required: true, default: DateTime.now)
|
41
46
|
```
|
42
47
|
|
43
|
-
Each of the supplied methods takes a positional parameter for the name of the
|
44
|
-
and then two optional named parameters `default` and
|
45
|
-
both, but nothing stops you from doing
|
46
|
-
|
47
|
-
|
48
|
+
Each of the supplied methods takes a positional parameter for the name of the
|
49
|
+
environment variable, and then two optional named parameters `default` and
|
50
|
+
`required` (there's no point in supplying both, but nothing stops you from doing
|
51
|
+
so). The `default` value is the value used if the variable isn't present in the
|
52
|
+
environment. If `required` is set to a truthy value, then if the variable isn't
|
53
|
+
present in the environment, an `EnvironmentHelpers::MissingVariableError` is
|
54
|
+
raised.
|
48
55
|
|
49
56
|
The available methods added to `ENV`:
|
50
57
|
|
51
|
-
* `string` - environment values are already strings, so this is the simplest of
|
52
|
-
|
53
|
-
* `
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
* `
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
58
|
+
* `string` - environment values are already strings, so this is the simplest of
|
59
|
+
the methods.
|
60
|
+
* `symbol` - produces a symbol, and enforces that the default value is either
|
61
|
+
`nil` or a Symbol.
|
62
|
+
* `boolean` - produces `nil`, `true`, or `false` (and only allows those as
|
63
|
+
defaults). Supports.. a fair variety of strings to map onto those boolean
|
64
|
+
value, though you should probably just use "true" and "false" really. If you
|
65
|
+
specify `required: true` and get a value like "maybe?", it'll raise an
|
66
|
+
`EnvironmentHelpers::InvalidBooleanText` exception.
|
67
|
+
* `integer_range` - produces an integer Range object. It accepts `N-N`, `N..N`,
|
68
|
+
or `N...N`, (the latter means 'excluding the upper bound, as in ruby).
|
69
|
+
* `integer` - produces an integer from the environment variable, by calling
|
70
|
+
`to_i` on it (if it's present). Note that this means that providing a value
|
71
|
+
like "hello" means you'll get `0`, since that's what ruby does when you call
|
72
|
+
`"hello".to_i`.
|
73
|
+
* `file_path` - produces a `Pathname` initialized with the path specified by the
|
74
|
+
environment variable.
|
75
|
+
* `date` - produces a `Date` object, using `Date.strptime`. The default format
|
76
|
+
string is `%Y-%m-%d`, which would parse a date like `2023-12-25`. It will
|
77
|
+
handle invalid values (or format strings) like the variable not being present,
|
78
|
+
though if it's specified as `required`, you will see a different exception in
|
79
|
+
each case.
|
80
|
+
* `date_time` - produces a `DateTime` object, using either `DateTime.strptime`
|
81
|
+
or `DateTime.iso8601`. The default format is `:iso8601`, and `:unix` is also
|
82
|
+
an allowed 'format'. But if it is supplied as a _string_, it will be handled
|
83
|
+
as a strptime format string (the `:unix` format is equivalent to the format
|
84
|
+
string `"%s"`). It handles invalid or unparseable values like `ENV.date` does,
|
85
|
+
in that they are treated as if not supplied.
|
data/environment_helpers.gemspec
CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
|
|
13
13
|
DESC
|
14
14
|
spec.homepage = "https://github.com/nevinera/environment_helpers"
|
15
15
|
spec.license = "MIT"
|
16
|
-
spec.required_ruby_version = Gem::Requirement.new(">= 2.
|
16
|
+
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
|
17
17
|
|
18
18
|
spec.metadata["homepage_uri"] = spec.homepage
|
19
19
|
spec.metadata["source_code_uri"] = spec.homepage
|
@@ -30,7 +30,10 @@ Gem::Specification.new do |spec|
|
|
30
30
|
|
31
31
|
spec.add_development_dependency "rspec", "~> 3.10"
|
32
32
|
spec.add_development_dependency "simplecov", "~> 0.22.0"
|
33
|
+
spec.add_development_dependency "rspec-cover_it", "~> 0.1.0"
|
33
34
|
spec.add_development_dependency "pry", "~> 0.14"
|
34
35
|
spec.add_development_dependency "standard", "~> 1.28"
|
35
36
|
spec.add_development_dependency "rubocop", "~> 1.50"
|
37
|
+
spec.add_development_dependency "quiet_quality", "~> 1.3.0"
|
38
|
+
spec.add_development_dependency "mdl", "~> 0.12"
|
36
39
|
end
|
@@ -12,6 +12,16 @@ module EnvironmentHelpers
|
|
12
12
|
fail(InvalidDateText, "Required date environment variable #{name} had inappropriate content '#{text}'")
|
13
13
|
end
|
14
14
|
|
15
|
+
def date_time(name, format: :iso8601, default: nil, required: false)
|
16
|
+
check_default_type(:date_time, default, DateTime)
|
17
|
+
text = fetch_value(name, required: required)
|
18
|
+
dt = parse_date_time_from(text, format: format)
|
19
|
+
|
20
|
+
return dt if dt
|
21
|
+
return default unless required
|
22
|
+
fail(InvalidDateTimeText, "Require date_time environment variable #{name} had inappropriate content '#{text}'")
|
23
|
+
end
|
24
|
+
|
15
25
|
private
|
16
26
|
|
17
27
|
def parse_date_from(text, format:)
|
@@ -20,5 +30,37 @@ module EnvironmentHelpers
|
|
20
30
|
rescue ArgumentError
|
21
31
|
nil
|
22
32
|
end
|
33
|
+
|
34
|
+
def parse_date_time_from(text, format:)
|
35
|
+
if text.nil?
|
36
|
+
nil
|
37
|
+
elsif format == :iso8601
|
38
|
+
iso8601_date_time(text)
|
39
|
+
elsif format == :unix
|
40
|
+
unix_date_time(text)
|
41
|
+
elsif format.is_a?(String)
|
42
|
+
strptime_date_time(text, format: format)
|
43
|
+
else
|
44
|
+
fail(BadFormat, "ENV.date_time requires either a strptime format string, :unix, or :iso8601")
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def iso8601_date_time(text)
|
49
|
+
DateTime.iso8601(text)
|
50
|
+
rescue
|
51
|
+
nil
|
52
|
+
end
|
53
|
+
|
54
|
+
def unix_date_time(text)
|
55
|
+
DateTime.strptime(text, "%s")
|
56
|
+
rescue
|
57
|
+
nil
|
58
|
+
end
|
59
|
+
|
60
|
+
def strptime_date_time(text, format:)
|
61
|
+
DateTime.strptime(text, format)
|
62
|
+
rescue
|
63
|
+
nil
|
64
|
+
end
|
23
65
|
end
|
24
66
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
module EnvironmentHelpers
|
2
|
+
module EnumerableHelpers
|
3
|
+
VALID_TYPES = %i[strings symbols integers]
|
4
|
+
|
5
|
+
def array(key, of: :strings, delimiter: ",", default: nil, required: false)
|
6
|
+
check_default_type(:array, default, Array)
|
7
|
+
check_valid_data_type!(of)
|
8
|
+
check_default_data_types!(default, of)
|
9
|
+
|
10
|
+
values = fetch_value(key, required: required)
|
11
|
+
return default if values.nil?
|
12
|
+
|
13
|
+
values.split(delimiter).map { |value| value.send(TYPE_HANDLERS[of]) }
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def check_valid_data_type!(type)
|
19
|
+
unless VALID_TYPES.include?(type)
|
20
|
+
fail(InvalidType, "Valid types: #{VALID_TYPES.join(", ")}. Got: #{type}.")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def check_default_data_types!(default, type)
|
25
|
+
invalid = Array(default).reject { |val| val.is_a? TYPE_MAP[type] }
|
26
|
+
|
27
|
+
unless invalid.empty?
|
28
|
+
fail(BadDefault, "Default array contains values not of type `#{type}': #{invalid.join(", ")}")
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
TYPE_HANDLERS = {
|
33
|
+
integers: :to_i,
|
34
|
+
strings: :to_s,
|
35
|
+
symbols: :to_sym
|
36
|
+
}
|
37
|
+
|
38
|
+
TYPE_MAP = {
|
39
|
+
integers: Integer,
|
40
|
+
strings: String,
|
41
|
+
symbols: Symbol
|
42
|
+
}
|
43
|
+
end
|
44
|
+
end
|
data/lib/environment_helpers.rb
CHANGED
@@ -9,17 +9,21 @@ require_relative "./environment_helpers/range_helpers"
|
|
9
9
|
require_relative "./environment_helpers/numeric_helpers"
|
10
10
|
require_relative "./environment_helpers/file_helpers"
|
11
11
|
require_relative "./environment_helpers/datetime_helpers"
|
12
|
+
require_relative "./environment_helpers/enumerable_helpers"
|
12
13
|
|
13
14
|
module EnvironmentHelpers
|
14
15
|
Error = Class.new(::StandardError)
|
15
16
|
MissingVariableError = Class.new(Error)
|
16
17
|
BadDefault = Class.new(Error)
|
18
|
+
BadFormat = Class.new(Error)
|
17
19
|
|
20
|
+
InvalidType = Class.new(Error)
|
18
21
|
InvalidValue = Class.new(Error)
|
19
22
|
InvalidBooleanText = Class.new(InvalidValue)
|
20
23
|
InvalidRangeText = Class.new(InvalidValue)
|
21
24
|
InvalidIntegerText = Class.new(InvalidValue)
|
22
25
|
InvalidDateText = Class.new(InvalidValue)
|
26
|
+
InvalidDateTimeText = Class.new(InvalidValue)
|
23
27
|
|
24
28
|
include AccessHelpers
|
25
29
|
include StringHelpers
|
@@ -28,6 +32,7 @@ module EnvironmentHelpers
|
|
28
32
|
include NumericHelpers
|
29
33
|
include FileHelpers
|
30
34
|
include DatetimeHelpers
|
35
|
+
include EnumerableHelpers
|
31
36
|
end
|
32
37
|
|
33
38
|
ENV.extend(EnvironmentHelpers)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: environment_helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eric Mueller
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.22.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec-cover_it
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.1.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.1.0
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: pry
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +94,34 @@ dependencies:
|
|
80
94
|
- - "~>"
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '1.50'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: quiet_quality
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 1.3.0
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.3.0
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: mdl
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0.12'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0.12'
|
83
125
|
description: |
|
84
126
|
Convenience helpers for more simply accessing data passed to applications through the
|
85
127
|
environment that may have types and/or defaults
|
@@ -89,11 +131,16 @@ executables: []
|
|
89
131
|
extensions: []
|
90
132
|
extra_rdoc_files: []
|
91
133
|
files:
|
92
|
-
- ".github/workflows/
|
134
|
+
- ".github/workflows/quality.yml"
|
93
135
|
- ".github/workflows/rspec.yml"
|
94
136
|
- ".gitignore"
|
137
|
+
- ".mdl_rules.rb"
|
138
|
+
- ".mdlrc"
|
139
|
+
- ".quiet_quality.ci-cd.yml"
|
140
|
+
- ".quiet_quality.yml"
|
95
141
|
- ".rspec"
|
96
142
|
- ".rubocop.yml"
|
143
|
+
- CHANGELOG.md
|
97
144
|
- Gemfile
|
98
145
|
- LICENSE
|
99
146
|
- README.md
|
@@ -102,6 +149,7 @@ files:
|
|
102
149
|
- lib/environment_helpers/access_helpers.rb
|
103
150
|
- lib/environment_helpers/boolean_helpers.rb
|
104
151
|
- lib/environment_helpers/datetime_helpers.rb
|
152
|
+
- lib/environment_helpers/enumerable_helpers.rb
|
105
153
|
- lib/environment_helpers/file_helpers.rb
|
106
154
|
- lib/environment_helpers/numeric_helpers.rb
|
107
155
|
- lib/environment_helpers/range_helpers.rb
|
@@ -121,14 +169,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
121
169
|
requirements:
|
122
170
|
- - ">="
|
123
171
|
- !ruby/object:Gem::Version
|
124
|
-
version: 2.
|
172
|
+
version: 2.7.0
|
125
173
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
174
|
requirements:
|
127
175
|
- - ">="
|
128
176
|
- !ruby/object:Gem::Version
|
129
177
|
version: '0'
|
130
178
|
requirements: []
|
131
|
-
rubygems_version: 3.
|
179
|
+
rubygems_version: 3.4.10
|
132
180
|
signing_key:
|
133
181
|
specification_version: 4
|
134
182
|
summary: A set of convenience methods for accessing environment data
|
data/.github/workflows/lint.yml
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
name: Linters
|
2
|
-
|
3
|
-
on: [push]
|
4
|
-
|
5
|
-
jobs:
|
6
|
-
StandardRB:
|
7
|
-
runs-on: ubuntu-latest
|
8
|
-
steps:
|
9
|
-
- uses: actions/checkout@v2
|
10
|
-
|
11
|
-
- name: Set up ruby
|
12
|
-
uses: ruby/setup-ruby@v1
|
13
|
-
with:
|
14
|
-
ruby-version: 3.2
|
15
|
-
|
16
|
-
- name: Cache gems
|
17
|
-
uses: actions/cache@v1
|
18
|
-
with:
|
19
|
-
path: vendor/bundle
|
20
|
-
key: ${{ runner.os }}-linters-${{ hashFiles('Gemfile.lock') }}
|
21
|
-
restore-keys:
|
22
|
-
${{ runner.os }}-linters-
|
23
|
-
- name: Install gems
|
24
|
-
run: bundle install --jobs 4 --retry 3
|
25
|
-
|
26
|
-
- name: Run standard
|
27
|
-
run: bundle exec standardrb
|
28
|
-
|
29
|
-
- name: Run rubocop (complexity checks)
|
30
|
-
run: bundle exec rubocop --parallel
|