my_service 0.1.3 → 0.1.4

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: 650b5f11d7965f4320bbb207a79df309db390ff9dcaf6a477378621570eac8f6
4
- data.tar.gz: c255d12e0452e0f1dc17b65976f423077e22415c31a66ace868c1af2e1be7f6f
3
+ metadata.gz: 0ff4299f9d426f6f35dfdbb7079d254080a0d14ff720cad1057b1b4d1c4d4c41
4
+ data.tar.gz: 42249434d8cf5713e263232655575b3948423bb02f71ac5a436f8670a78cecd4
5
5
  SHA512:
6
- metadata.gz: 4bf601c4e5123ff02c91477477c2f2a44e655f78542e6480f8c124cefff0388b1e08d71538372efeba8eca973ac4331064a5635ffbe9024652c17c17b41100b6
7
- data.tar.gz: 7f7674c152c58c91fa26871d42655a47d02752d0c856238856374e531cc79bedde724c43c2d651fe0603c92adb7c484430c1df1e03d36f695be0c47221525b31
6
+ metadata.gz: ee56aefb3f03e423322e7d79682f62b21169a7b2ee0efbbc404f9dd2a6eac5489aad937452d035d24cd42e038eca9db914e1d5a5e3c0c26d9ed64a54baf4470d
7
+ data.tar.gz: ccc73fdc9efa2033dacc3cc2dcd8d2bd2824f6662c4beb7042c566face295cc92c39e5403d6471c459964e9427bc2e66071d0824af3b84090a234ad517ced9f3
@@ -1,2 +1,2 @@
1
1
  require 'my_service/version'
2
- require 'my_service/service'
2
+ require 'service'
@@ -1,3 +1,3 @@
1
1
  module MyService
2
- VERSION = '0.1.3'.freeze
2
+ VERSION = '0.1.4'.freeze
3
3
  end
@@ -0,0 +1,31 @@
1
+ class Service
2
+ def self.require_args(*args)
3
+ @required_args = args
4
+ end
5
+
6
+ def self.call(**args)
7
+ new.validate_arguments(@required_args, args)
8
+ .instance_params(args)
9
+ .perform
10
+ end
11
+
12
+ def validate_arguments(required_args, args)
13
+ missing_args = required_args&.map do |required_arg|
14
+ required_arg unless args.include?(required_arg)
15
+ end&.compact
16
+
17
+ if missing_args.present?
18
+ raise ArgumentError,
19
+ "Required #{'param'.pluralize(missing_args.count)}
20
+ missing in #{self.class.name}: #{missing_args.join(', ')}"
21
+ end
22
+
23
+ self
24
+ end
25
+
26
+ def instance_params(args)
27
+ args.each { |key, value| instance_variable_set("@#{key}", value) }
28
+
29
+ self
30
+ end
31
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: my_service
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Iago Silva
@@ -48,8 +48,8 @@ extensions: []
48
48
  extra_rdoc_files: []
49
49
  files:
50
50
  - lib/my_service.rb
51
- - lib/my_service/service.rb
52
51
  - lib/my_service/version.rb
52
+ - lib/service.rb
53
53
  homepage: https://github.com/iago-silva/my_service
54
54
  licenses:
55
55
  - MIT
@@ -73,6 +73,6 @@ rubyforge_project:
73
73
  rubygems_version: 2.7.3
74
74
  signing_key:
75
75
  specification_version: 4
76
- summary: A simple gem that allows you encapsulate a piece of code to run from wherever
76
+ summary: A simple gem that allows you encapsulate a piece of code to run it from wherever
77
77
  you want
78
78
  test_files: []
@@ -1,31 +0,0 @@
1
- module MyService
2
- # inherit this class to have your own service
3
- class Service
4
- def self.require_args(*args_required)
5
- @args_required = args_required
6
- end
7
-
8
- def self.call(**args)
9
- validate_arguments(args)
10
-
11
- instance = new
12
- instance.instance_params(args)
13
- instance.perform
14
- end
15
-
16
- def self.validate_arguments(args)
17
- return if @args.present?
18
-
19
- @args_required.each do |arg|
20
- unless args.include?(arg)
21
- raise ArgumentError,
22
- "params required by service: #{@args_required.join(', ')}"
23
- end
24
- end
25
- end
26
-
27
- def instance_params(args)
28
- args.each { |key, value| instance_variable_set("@#{key}", value) }
29
- end
30
- end
31
- end