nxt_support 0.4.3 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +5 -3
- data/.ruby-version +1 -1
- data/CHANGELOG.md +3 -0
- data/Gemfile.lock +27 -25
- data/README.md +65 -4
- data/lib/nxt_support/console.rb +54 -0
- data/lib/nxt_support/version.rb +1 -1
- data/lib/nxt_support.rb +1 -0
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5be999049e08c616e9259357e3babdc21c8a56202e29463ffb35877d7b59156b
|
4
|
+
data.tar.gz: a24d5abbc81b8a05104096251e7a1c5ef95fd4ef22378be9ad225e310848a417
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62f3c629491c73b7b9fe0ac85639d01671cd3845fa6250a5c5b980ca5ea2a3353bc17337f2a7dbf72904113761cf70d6b43864635a526eed6bb0f7eb859e997d
|
7
|
+
data.tar.gz: 27ea42c5fa932be54cbc2b2e0cc1d5e1edd34176fe50e8fb8581507ce9429fba032dbba2aeda8806044f7471918eb8cc33744939a881ab4a6d409e7b2130ecb8
|
data/.circleci/config.yml
CHANGED
@@ -10,9 +10,9 @@ workflows:
|
|
10
10
|
- build:
|
11
11
|
matrix:
|
12
12
|
parameters:
|
13
|
-
ruby-version: ["3.0.2", "3.1.3", "3.2.1"]
|
13
|
+
ruby-version: ["3.0.2", "3.1.3", "3.2.1", "3.2.2"]
|
14
14
|
orbs:
|
15
|
-
ruby: circleci/ruby@2.0.
|
15
|
+
ruby: circleci/ruby@2.0.1
|
16
16
|
|
17
17
|
jobs:
|
18
18
|
build:
|
@@ -28,7 +28,9 @@ jobs:
|
|
28
28
|
|
29
29
|
steps:
|
30
30
|
- checkout
|
31
|
-
- ruby/install-deps
|
31
|
+
- ruby/install-deps:
|
32
|
+
key: gems-v2
|
33
|
+
include-branch-in-cache-key: false
|
32
34
|
- run:
|
33
35
|
name: run tests
|
34
36
|
command: |
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
3.2.
|
1
|
+
3.2.2
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
nxt_support (0.
|
4
|
+
nxt_support (0.5.0)
|
5
5
|
activerecord
|
6
6
|
activesupport
|
7
7
|
nxt_init
|
@@ -10,47 +10,49 @@ PATH
|
|
10
10
|
GEM
|
11
11
|
remote: https://rubygems.org/
|
12
12
|
specs:
|
13
|
-
activemodel (7.0.
|
14
|
-
activesupport (= 7.0.
|
15
|
-
activerecord (7.0.
|
16
|
-
activemodel (= 7.0.
|
17
|
-
activesupport (= 7.0.
|
18
|
-
activesupport (7.0.
|
13
|
+
activemodel (7.0.7.2)
|
14
|
+
activesupport (= 7.0.7.2)
|
15
|
+
activerecord (7.0.7.2)
|
16
|
+
activemodel (= 7.0.7.2)
|
17
|
+
activesupport (= 7.0.7.2)
|
18
|
+
activesupport (7.0.7.2)
|
19
19
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
20
20
|
i18n (>= 1.6, < 2)
|
21
21
|
minitest (>= 5.1)
|
22
22
|
tzinfo (~> 2.0)
|
23
23
|
coderay (1.1.3)
|
24
24
|
concurrent-ruby (1.2.2)
|
25
|
-
diff-lcs (1.
|
26
|
-
i18n (1.
|
25
|
+
diff-lcs (1.5.0)
|
26
|
+
i18n (1.14.1)
|
27
27
|
concurrent-ruby (~> 1.0)
|
28
28
|
method_source (1.0.0)
|
29
|
-
|
29
|
+
mini_portile2 (2.8.4)
|
30
|
+
minitest (5.19.0)
|
30
31
|
nxt_init (0.1.5)
|
31
32
|
activesupport
|
32
33
|
nxt_registry (0.3.10)
|
33
34
|
activesupport
|
34
|
-
pry (0.14.
|
35
|
+
pry (0.14.2)
|
35
36
|
coderay (~> 1.1)
|
36
37
|
method_source (~> 1.0)
|
37
|
-
rake (13.0.
|
38
|
-
rspec (3.
|
39
|
-
rspec-core (~> 3.
|
40
|
-
rspec-expectations (~> 3.
|
41
|
-
rspec-mocks (~> 3.
|
42
|
-
rspec-core (3.
|
43
|
-
rspec-support (~> 3.
|
44
|
-
rspec-expectations (3.
|
38
|
+
rake (13.0.6)
|
39
|
+
rspec (3.12.0)
|
40
|
+
rspec-core (~> 3.12.0)
|
41
|
+
rspec-expectations (~> 3.12.0)
|
42
|
+
rspec-mocks (~> 3.12.0)
|
43
|
+
rspec-core (3.12.2)
|
44
|
+
rspec-support (~> 3.12.0)
|
45
|
+
rspec-expectations (3.12.3)
|
45
46
|
diff-lcs (>= 1.2.0, < 2.0)
|
46
|
-
rspec-support (~> 3.
|
47
|
-
rspec-mocks (3.
|
47
|
+
rspec-support (~> 3.12.0)
|
48
|
+
rspec-mocks (3.12.6)
|
48
49
|
diff-lcs (>= 1.2.0, < 2.0)
|
49
|
-
rspec-support (~> 3.
|
50
|
-
rspec-support (3.
|
51
|
-
rspec_junit_formatter (0.
|
50
|
+
rspec-support (~> 3.12.0)
|
51
|
+
rspec-support (3.12.1)
|
52
|
+
rspec_junit_formatter (0.6.0)
|
52
53
|
rspec-core (>= 2, < 4, != 2.12.0)
|
53
|
-
sqlite3 (1.
|
54
|
+
sqlite3 (1.6.3)
|
55
|
+
mini_portile2 (~> 2.8.0)
|
54
56
|
tzinfo (2.0.6)
|
55
57
|
concurrent-ruby (~> 1.0)
|
56
58
|
|
data/README.md
CHANGED
@@ -2,7 +2,10 @@
|
|
2
2
|
|
3
3
|
# NxtSupport
|
4
4
|
|
5
|
-
This is a collection of mixins, helpers and classes that cover several aspects of a ruby on rails application, such as models, controllers and job processing.
|
5
|
+
This is a collection of mixins, helpers and classes that cover several aspects of a ruby on rails application, such as models, controllers and job processing.
|
6
|
+
At [Getsafe](https://hellogetsafe.com), we run multiple Ruby on Rails apps as part of our insurance infrastructure and we found that we wrote quite some
|
7
|
+
shared helpers that are duplicated among applications and serve a generic purpose that we could share in this gem.
|
8
|
+
Look at it as our version of ActiveSupport (which is amazing! ❤️), dropping in the pieces we sometimes miss in the beautiful puzzle of Rails.
|
6
9
|
|
7
10
|
## Installation
|
8
11
|
|
@@ -28,7 +31,7 @@ Here's an overview all the supporting features.
|
|
28
31
|
A Rack middleware that adds a `Sentry-Error-ID` header to 5xx responses.
|
29
32
|
The header is only added if an error was reported during the request.
|
30
33
|
The error ID is gotten from [`sentry.error_event_id` in the Rack env](https://github.com/getsentry/sentry-ruby/pull/1849)).
|
31
|
-
You can then visit `https
|
34
|
+
You can then visit `https://<org-slug>.sentry.io/issues/?query=<error-event-id>`
|
32
35
|
to go directly to the error (it may not show up immediately).
|
33
36
|
|
34
37
|
Note that this middleware must be inserted before Sentry's own middleware.
|
@@ -250,7 +253,7 @@ TestClass.translate_hash(firstname: 'John', firstname: :first_name)
|
|
250
253
|
=> { 'first_name' => 'John' }
|
251
254
|
```
|
252
255
|
The `value` also could be a `Hash` where key represents the new key in result hash and value must be a lambda or Proc
|
253
|
-
that would be used to process value from origin hash. If the tuple hash contains more than 1 key-value
|
256
|
+
that would be used to process value from origin hash. If the tuple hash contains more than 1 key-value pairs or value in key value pair
|
254
257
|
is not a callable block `InvalidTranslationArgument` error would be raised.
|
255
258
|
|
256
259
|
```ruby
|
@@ -357,6 +360,64 @@ NxtSupport::BirthDate.new(date: '1990-08-08').to_age # => 30
|
|
357
360
|
NxtSupport::BirthDate.new(date: '1990-08-08').to_age_in_months # => 361
|
358
361
|
```
|
359
362
|
|
363
|
+
### NxtSupport::Console.rake_cli_options
|
364
|
+
A simple utility that uses Ruby's [OptionParser](https://docs.ruby-lang.org/en/2.1.0/OptionParser.html)
|
365
|
+
to make it easier to pass CLI options to Rake tasks.
|
366
|
+
|
367
|
+
#### Task definition
|
368
|
+
Call `NxtSupport::Console.rake_cli_options` with a block. Use the `option` method to define options.
|
369
|
+
It takes one required argument (the flag syntax), and optionally the data type and a default value.
|
370
|
+
|
371
|
+
Options which are not booleans **must** end with an `=`.
|
372
|
+
|
373
|
+
```rb
|
374
|
+
task my_task: :environment do
|
375
|
+
opts = NxtSupport::Console.rake_cli_options do
|
376
|
+
option '--simulate', default: false
|
377
|
+
option '--contract_numbers=', Array, default: []
|
378
|
+
option '--limit=', Integer
|
379
|
+
option '--effective_at='
|
380
|
+
end
|
381
|
+
|
382
|
+
do_stuff_with opts
|
383
|
+
end
|
384
|
+
```
|
385
|
+
|
386
|
+
#### Command line
|
387
|
+
|
388
|
+
A `--` must be passed after the Rake task name and any Rake-specific options,
|
389
|
+
before our custom task options. (With `heroku run`, you'll also need a second `--`).
|
390
|
+
|
391
|
+
```sh
|
392
|
+
rake my_task -- --simulate --contract_numbers=123,456 --effective_at=2022-01-02 --limit=20
|
393
|
+
# {:contract_numbers=>["123", "456"], :simulate=>true, :effective_at=>"2022-01-02", :limit=>20}
|
394
|
+
```
|
395
|
+
|
396
|
+
On Heroku (note the second `--`):
|
397
|
+
|
398
|
+
```sh
|
399
|
+
heroku run rake my_task -- -- --simulate --contract_numbers=123,456 --effective_at=2022-01-02 --limit=20
|
400
|
+
```
|
401
|
+
|
402
|
+
If any options are not passed, they'll be replaced with their defaults.
|
403
|
+
If no default was specified, they will _not_ be present in the returned hash.
|
404
|
+
|
405
|
+
```sh
|
406
|
+
rake my_task -- --effective_at=2022-10-13
|
407
|
+
# {:simulate=>false, :effective_at=>"2022-10-13", :contract_numbers=>[]}
|
408
|
+
```
|
409
|
+
|
410
|
+
If you specify an option which was not defined, the command will exit with an error:
|
411
|
+
|
412
|
+
```sh
|
413
|
+
rake my_task -- --effective_at=2022-10-13 --testing
|
414
|
+
# invalid option: --testing
|
415
|
+
```
|
416
|
+
|
417
|
+
#### Limitations
|
418
|
+
- Short arguments aren't supported (`-l` as a shortcut for `--limit`).
|
419
|
+
- On the command line, options with values must be passed with an `=` at the end. `--effective_at 2022-10-13` will not work.
|
420
|
+
|
360
421
|
### NxtSupport/Services
|
361
422
|
Enjoy your service objects.
|
362
423
|
|
@@ -436,7 +497,7 @@ To release a new version, update the version number in `version.rb`, and then ru
|
|
436
497
|
|
437
498
|
## Contributing
|
438
499
|
|
439
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
500
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/nxt-insurance/nxt_support.
|
440
501
|
|
441
502
|
## Publishing
|
442
503
|
### GitHub Tags and Releases
|
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module NxtSupport
|
4
|
+
module Console
|
5
|
+
# Better CLI arguments for Rake tasks, using Ruby's OptionParser
|
6
|
+
# See https://docs.ruby-lang.org/en/2.1.0/OptionParser.html
|
7
|
+
#
|
8
|
+
# Example usage in a task:
|
9
|
+
#
|
10
|
+
# task :my_task do
|
11
|
+
# opts = NxtSupport::Console.rake_cli_options do
|
12
|
+
# option '--simulate'
|
13
|
+
# option '--contract_numbers=', Array, default: []
|
14
|
+
# option '--limit=', Integer, default: 10
|
15
|
+
# option '--effective_at='
|
16
|
+
# end
|
17
|
+
#
|
18
|
+
# p opts
|
19
|
+
# end
|
20
|
+
#
|
21
|
+
# On the CLI:
|
22
|
+
# rake my_task -- --simulate --contract_numbers=123,456 --effective_at=2022-01-02 --limit=20
|
23
|
+
#
|
24
|
+
# Results:
|
25
|
+
# {:contract_numbers=>["123", "456"], :simulate=>true, :effective_at=>"2022-01-02", :limit=>20}
|
26
|
+
#
|
27
|
+
# Note that the extra "--" must be passed after the task name and all Rake-specific flags.
|
28
|
+
#
|
29
|
+
# Also, only arguments which are supplied on the CLI or had defaults defined will be present in the returned hash
|
30
|
+
# rake my_task -- --effective_at=2022-10-13
|
31
|
+
# => {:limit=>10, :effective_at=>"2022-10-13", :contract_numbers=>[]}
|
32
|
+
def rake_cli_options(argv = ARGV.dup, &option_definition_block)
|
33
|
+
require 'optparse'
|
34
|
+
|
35
|
+
argv.shift while argv.include?('--') # Remove task name and --
|
36
|
+
options = {}
|
37
|
+
|
38
|
+
OptionParser.new do |parser|
|
39
|
+
parser.define_singleton_method(:option) do |switch, type = nil, default: nil|
|
40
|
+
if default
|
41
|
+
switch_name = switch.sub('--', '').sub('=', '')
|
42
|
+
options[:"#{switch_name}"] = default
|
43
|
+
end
|
44
|
+
type ? def_option(switch, type) : def_option(switch)
|
45
|
+
end
|
46
|
+
parser.instance_eval(&option_definition_block)
|
47
|
+
end.parse!(argv, into: options)
|
48
|
+
|
49
|
+
options
|
50
|
+
end
|
51
|
+
|
52
|
+
module_function :rake_cli_options
|
53
|
+
end
|
54
|
+
end
|
data/lib/nxt_support/version.rb
CHANGED
data/lib/nxt_support.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nxt_support
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nils Sommer
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: exe
|
13
13
|
cert_chain: []
|
14
|
-
date: 2023-
|
14
|
+
date: 2023-08-23 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: activerecord
|
@@ -165,6 +165,7 @@ files:
|
|
165
165
|
- bin/rspec
|
166
166
|
- bin/setup
|
167
167
|
- lib/nxt_support.rb
|
168
|
+
- lib/nxt_support/console.rb
|
168
169
|
- lib/nxt_support/middleware/sentry_error_id.rb
|
169
170
|
- lib/nxt_support/models.rb
|
170
171
|
- lib/nxt_support/models/assignable_values.rb
|
@@ -214,7 +215,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
214
215
|
- !ruby/object:Gem::Version
|
215
216
|
version: '0'
|
216
217
|
requirements: []
|
217
|
-
rubygems_version: 3.4.
|
218
|
+
rubygems_version: 3.4.10
|
218
219
|
signing_key:
|
219
220
|
specification_version: 4
|
220
221
|
summary: Support through reusable Mixins and Helpers for Ruby on Rails Applications
|