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 +4 -4
- data/lib/my_service.rb +1 -1
- data/lib/my_service/version.rb +1 -1
- data/lib/service.rb +31 -0
- metadata +3 -3
- data/lib/my_service/service.rb +0 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ff4299f9d426f6f35dfdbb7079d254080a0d14ff720cad1057b1b4d1c4d4c41
|
4
|
+
data.tar.gz: 42249434d8cf5713e263232655575b3948423bb02f71ac5a436f8670a78cecd4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee56aefb3f03e423322e7d79682f62b21169a7b2ee0efbbc404f9dd2a6eac5489aad937452d035d24cd42e038eca9db914e1d5a5e3c0c26d9ed64a54baf4470d
|
7
|
+
data.tar.gz: ccc73fdc9efa2033dacc3cc2dcd8d2bd2824f6662c4beb7042c566face295cc92c39e5403d6471c459964e9427bc2e66071d0824af3b84090a234ad517ced9f3
|
data/lib/my_service.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
require 'my_service/version'
|
2
|
-
require '
|
2
|
+
require 'service'
|
data/lib/my_service/version.rb
CHANGED
data/lib/service.rb
ADDED
@@ -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.
|
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: []
|
data/lib/my_service/service.rb
DELETED
@@ -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
|