service_it 1.2.0 → 2.0.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
2
  SHA256:
3
- metadata.gz: f3f5602ec47b3704b58581e2367192e409ff098a3232f25d925cf1256f82d434
4
- data.tar.gz: a9c85fe22387bcca449b0242905f204e2b30473c6259246cf345341c549712f5
3
+ metadata.gz: 242be73eac2e2beb31caa752a64e14b3df89a8d5d1e86171ed0ebd17108363eb
4
+ data.tar.gz: f9bf6a0a347ea667a1b1d057edc866db2a7c720699bd2227ff251f71a1e212c7
5
5
  SHA512:
6
- metadata.gz: df4426ddc277a66097a73e40228e722fffcb69c9e114041143936f1c377fa98d440651bacf4f20d8a06e62fff1a2a769bcd66395657aa959ad7b5a47c64aa9ff
7
- data.tar.gz: 2d356875f6f388617705b4b8f6799a616a8046553385f3c0da94b087f4b077d1dbf7bba7e43792fe495aa1e89040c067a8351f0dae19ee74190d3cb3beb4151c
6
+ metadata.gz: 63383bbf3934b6a25a3ed4bef403c0e21ad2c35abb5ba81914cd6fa010fa602d948e9868927a981ed0e0870df0767c5bf304bf8297f419d7c8bfb496950445e4
7
+ data.tar.gz: d44619f576bfb329151a241f40f589ff0c54248faf0bc9dce9b229bf0095a79cd6cc432feaf6ac95f3d11f9ce40483b49b84b982e3f4b57714493a8ccfe7a7ca
data/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  # ServiceIt
2
- [![Gem Version](https://badge.fury.io/rb/service_it.svg)](https://badge.fury.io/rb/service_it) [![Build Status](https://travis-ci.org/iago-silva/service_it.svg?branch=master)](https://travis-ci.org/iago-silva/service_it) [![Code Climate](https://codeclimate.com/github/iago-silva/service_it.png)](https://codeclimate.com/github/iago-silva/service_it) [![Test Coverage](https://api.codeclimate.com/v1/badges/fcc8375ebe8fa5412381/test_coverage)](https://codeclimate.com/github/iago-silva/service_it/test_coverage)
2
+ [![Gem Version](https://badge.fury.io/rb/service_it.svg)](https://badge.fury.io/rb/service_it) [![Build Status](https://travis-ci.org/iago-silva/service_it.svg?branch=master)](https://travis-ci.org/iago-silva/service_it) [![Code Climate](https://codeclimate.com/github/iago-silva/service_it.png)](https://codeclimate.com/github/iago-silva/service_it)
3
3
 
4
4
  Its benefit is to facilitate the creation of Service Objects, providing you the basic and enough to have a complete one and letting you free to use on your own way.
5
5
 
@@ -49,7 +49,7 @@ class Foo < ServiceIt::Base
49
49
  end
50
50
  ```
51
51
 
52
- Call your service from anywhere
52
+ Call your service from anywhere (controllers, models, migrations, ...)
53
53
 
54
54
  ```ruby
55
55
  Foo.call(foo: foo, bar: bar)
@@ -59,48 +59,8 @@ Foo.call(foo: foo, bar: bar)
59
59
 
60
60
  Simple example to release a _POST_
61
61
 
62
- * Before
63
-
64
- ```ruby
65
- # app/controllers/post_releases_controller.rb
66
- class PostReleasesController < ApplicationController
67
-
68
- # [...]
69
-
70
- def update
71
- @post.prepare_to_release # <--
72
- if @post.update(released_at: Date.current) # <--
73
- # [...]
74
- else
75
- # [...]
76
- end
77
- end
78
-
79
- # [...]
80
-
81
- end
82
-
83
- ```
84
-
85
- * After
86
-
87
62
  ```ruby
88
- # app/controllers/post_releases_controller.rb
89
- class PostReleasesController < ApplicationController
90
-
91
- # [...]
92
-
93
- def update
94
- if ReleasePost.call(post: @post) # <--
95
- # [...]
96
- else
97
- # [...]
98
- end
99
- end
100
-
101
- # [...]
102
-
103
- end
63
+ ReleasePost.call(post: @post)
104
64
  ```
105
65
 
106
66
  ```ruby
@@ -6,6 +6,8 @@ module ServiceIt
6
6
  # Documentation:
7
7
  # https://github.com/iago-silva/service_it
8
8
  class Base
9
+ private_class_method :new
10
+
9
11
  # Call your service
10
12
  #
11
13
  # Example:
@@ -21,7 +23,10 @@ module ServiceIt
21
23
  end
22
24
 
23
25
  def initialize(args)
24
- args.each { |key, value| set_private_ivar(key, value) }
26
+ args.each do |key, value|
27
+ define_ivar(key, value)
28
+ define_private_reader(key)
29
+ end
25
30
  end
26
31
 
27
32
  # Implement this method to run your service
@@ -32,9 +37,11 @@ module ServiceIt
32
37
 
33
38
  private
34
39
 
35
- def set_private_ivar(key, value)
40
+ def define_ivar(key, value)
36
41
  instance_variable_set("@#{key}", value)
42
+ end
37
43
 
44
+ def define_private_reader(key)
38
45
  self.class.class_eval do
39
46
  private
40
47
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ServiceIt
4
- VERSION = '1.2.0'.freeze
4
+ VERSION = '2.0.0'
5
5
  end
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ describe ServiceIt::Base do
4
+ context 'when calls new method' do
5
+ subject { described_class.new }
6
+
7
+ it 'raises NoMethodError exception' do
8
+ expect { subject }.to raise_error(NoMethodError)
9
+ end
10
+ end
11
+
12
+ describe SayMyName do
13
+ context 'when I ask what is my name' do
14
+ subject { described_class.call(name: name) }
15
+
16
+ let(:name) { 'Heisenberg' }
17
+
18
+ it 'says Heisenberg' do
19
+ expect(subject).to eq(name)
20
+ end
21
+ end
22
+ end
23
+
24
+ describe MissedPerformService do
25
+ context 'when perform method is not defined' do
26
+ subject { described_class.call }
27
+
28
+ it 'raises NotImplementedError exception' do
29
+ expect { subject }.to raise_error(NotImplementedError)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,22 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
4
-
5
3
  describe ServiceIt do
6
- describe SayMyName do
7
- let(:name) { 'Heisenberg' }
8
-
9
- it 'says Heisenberg' do
10
- result = SayMyName.call(name: name)
11
- expect(result).to eq(name)
12
- end
13
- end
14
-
15
- context 'when perform method is not defined' do
16
- it 'raises an NotImplementedError exception' do
17
- expect do
18
- MissedPerformService.call
19
- end.to raise_error(NotImplementedError)
20
- end
4
+ it 'has a version number' do
5
+ expect(ServiceIt::VERSION).not_to be nil
21
6
  end
22
7
  end
@@ -3,11 +3,5 @@
3
3
  $LOAD_PATH.unshift File.expand_path('../lib', __dir__)
4
4
 
5
5
  require 'service_it'
6
- require 'simplecov'
7
6
 
8
- Dir['./spec/support/**/*.rb'].each { |f| require f }
9
-
10
- SimpleCov.minimum_coverage 100
11
- SimpleCov.start do
12
- add_filter '/spec/'
13
- end
7
+ Dir['./spec/support/**/*.rb'].sort.each { |f| require f }
@@ -6,5 +6,4 @@ class SayMyName < ServiceIt::Base
6
6
  end
7
7
  end
8
8
 
9
- class MissedPerformService < ServiceIt::Base
10
- end
9
+ class MissedPerformService < ServiceIt::Base; end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: service_it
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Iago Silva
@@ -10,52 +10,67 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2018-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pry
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '='
18
+ - !ruby/object:Gem::Version
19
+ version: 0.13.1
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '='
25
+ - !ruby/object:Gem::Version
26
+ version: 0.13.1
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rspec
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
- - - ">="
31
+ - - '='
18
32
  - !ruby/object:Gem::Version
19
- version: '0'
33
+ version: 3.10.0
20
34
  type: :development
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
- - - ">="
38
+ - - '='
25
39
  - !ruby/object:Gem::Version
26
- version: '0'
40
+ version: 3.10.0
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rubocop
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - ">="
45
+ - - '='
32
46
  - !ruby/object:Gem::Version
33
- version: '0'
47
+ version: 1.5.1
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - ">="
52
+ - - '='
39
53
  - !ruby/object:Gem::Version
40
- version: '0'
54
+ version: 1.5.1
41
55
  - !ruby/object:Gem::Dependency
42
- name: simplecov
56
+ name: rubocop-rspec
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - ">="
59
+ - - '='
46
60
  - !ruby/object:Gem::Version
47
- version: '0'
61
+ version: 2.0.1
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - ">="
66
+ - - '='
53
67
  - !ruby/object:Gem::Version
54
- version: '0'
68
+ version: 2.0.1
55
69
  description: |-
56
70
  Service objects are a holy grail to keep your controllers and
57
71
  models slim and readable
58
- email: iago.silva@interage.in
72
+ email:
73
+ - iago.cith@hotmail.com
59
74
  executables: []
60
75
  extensions: []
61
76
  extra_rdoc_files: []
@@ -67,13 +82,16 @@ files:
67
82
  - lib/service_it.rb
68
83
  - lib/service_it/base.rb
69
84
  - lib/service_it/version.rb
85
+ - spec/service_it/base_spec.rb
70
86
  - spec/service_it_spec.rb
71
87
  - spec/spec_helper.rb
72
88
  - spec/support/test_classes.rb
73
89
  homepage: https://github.com/iago-silva/service_it
74
90
  licenses:
75
91
  - MIT
76
- metadata: {}
92
+ metadata:
93
+ homepage_uri: https://github.com/iago-silva/service_it
94
+ source_code_uri: https://github.com/iago-silva/service_it
77
95
  post_install_message:
78
96
  rdoc_options: []
79
97
  require_paths:
@@ -82,19 +100,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
82
100
  requirements:
83
101
  - - ">="
84
102
  - !ruby/object:Gem::Version
85
- version: '0'
103
+ version: 2.4.0
86
104
  required_rubygems_version: !ruby/object:Gem::Requirement
87
105
  requirements:
88
106
  - - ">="
89
107
  - !ruby/object:Gem::Version
90
108
  version: '0'
91
109
  requirements: []
92
- rubyforge_project:
93
- rubygems_version: 2.7.9
110
+ rubygems_version: 3.1.2
94
111
  signing_key:
95
112
  specification_version: 4
96
113
  summary: Simple gem to keep your controllers and models slim and readable
97
114
  test_files:
98
- - spec/spec_helper.rb
99
115
  - spec/service_it_spec.rb
100
116
  - spec/support/test_classes.rb
117
+ - spec/service_it/base_spec.rb
118
+ - spec/spec_helper.rb