simple_service 2.1.5 → 2.1.6

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: d3f4dc247883ae9ebda40616abae2ecada0f44e3a81babb3fe8f99f4ddd072cf
4
- data.tar.gz: 1c238edcfa08c34cc0fe9d166b2cb9d4c8d8803d2f0b84e26265433bd2bc59d0
3
+ metadata.gz: 407aa35e8ec13960f5cc0509d5e1152b5f94fed9bf7d035aa20e759b27e4de80
4
+ data.tar.gz: 9fbaaf4c5afbf37dd68814032312e3a1d8b98e0a1f5d511c111c2679f881296e
5
5
  SHA512:
6
- metadata.gz: 53c0ccac4184ad5be6e3a849b94a1dc5c2fb419937a500db3edbe59762cdd54e23ca1dffa411d5362636683dc9ec6aa3aa2b4a68297cd61e28c59330a2cc36ff
7
- data.tar.gz: 0071e4847fa116a5fcbcc8235528a2a630d974c421b21b199bd4f496ebcc508aa8ee5949bc7f7d7974f0dc58ef83a3b2e33a46a5983538400edcdee6c3d93a38
6
+ metadata.gz: f4f17ce95877a995c8b0b48a12b57c1147360115bd1b94b365c30a8a618bfa591197d66f107594923cf71cd81ec80e38b6101be28a93967bf6b3b96adfe69927
7
+ data.tar.gz: 61e3058fe33d2294255fa1933901146f417199c45b83fdb428d6d7c835df78d2e222b25cce2862025b1dcd1b5ececf698abb885adb2c70ca4e0411c76b89c0f8
@@ -0,0 +1,41 @@
1
+ name: Build Master
2
+
3
+ env:
4
+ CC_TEST_REPORTER_URL: https://codeclimate.com/downloads/test-reporter/test-reporter-0.7.0-linux-amd64
5
+ CC_TEST_REPORTER_ID: ${{ secrets.SIMPLE_SERVICE_CODECLIMATE_ID }}
6
+
7
+ on:
8
+ pull_request:
9
+
10
+ push:
11
+ branches:
12
+ - master
13
+ jobs:
14
+ test:
15
+ strategy:
16
+ fail-fast: false
17
+ matrix:
18
+ os: [ubuntu-latest]
19
+ # Due to https://github.com/actions/runner/issues/849, we have to use quotes for '3.0'
20
+ ruby: ["2.7.0", "3.2.2"]
21
+ runs-on: ${{ matrix.os }}
22
+ steps:
23
+ - uses: actions/checkout@v3
24
+ - uses: ruby/setup-ruby@v1
25
+ with:
26
+ ruby-version: ${{ matrix.ruby }}
27
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
28
+
29
+ - name: Install dependencies
30
+ run: |
31
+ gem install bundler -v 2.4.14
32
+ bundle install --jobs 3 --retry 3
33
+
34
+ - name: Run tests
35
+ run: RUBYOPT="-E UTF-8" bundle exec rake
36
+
37
+ - name: Code Climate Test Reporter
38
+ uses: aktions/codeclimate-test-reporter@v1
39
+ with:
40
+ codeclimate-test-reporter-id: ${{ secrets.SIMPLE_SERVICE_CODECLIMATE_ID }}
41
+ command: after-build
data/README.md CHANGED
@@ -1,28 +1,26 @@
1
1
  # SimpleService
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/simple_service.svg)](http://badge.fury.io/rb/simple_service)
4
- [![Code Climate](https://codeclimate.com/github/jspillers/simple_service/badges/gpa.svg)](https://codeclimate.com/github/jspillers/simple_service)
5
- [![Test Coverage](https://codeclimate.com/github/jspillers/simple_service/badges/coverage.svg)](https://codeclimate.com/github/jspillers/simple_service)
6
- [![Build Status](https://travis-ci.org/jspillers/simple_service.svg?branch=master)](https://travis-ci.org/jspillers/simple_service)
7
- <!--![](http://ruby-gem-downloads-badge.herokuapp.com/jspillers/simple_service)-->
4
+ [![Maintainability](https://api.codeclimate.com/v1/badges/4b75735e83e2bc944285/maintainability)](https://codeclimate.com/github/jspillers/simple_service/maintainability)
5
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/4b75735e83e2bc944285/test_coverage)](https://codeclimate.com/github/jspillers/simple_service/test_coverage)
8
6
 
9
7
  SimpleService facilitates the creation of Ruby service objects into highly discreet, reusable,
10
- and composable units of business logic. The core concept of SimpleService is the definition of
11
- "Command" objects/methods. Commands are very small classes or methods that perform exactly one task.
8
+ and composable units of business logic. The core concept of SimpleService is the definition of
9
+ "Command" objects/methods. Commands are very small classes or methods that perform exactly one task.
12
10
  When properly designed, these command objects can be composited together or even nested to create
13
11
  complex flows.
14
12
 
15
13
  # 2.0.0 update notes
16
14
 
17
- This update is a major refactor from previous 1.x.x versions. After revisiting this codebase I decided that
15
+ This update is a major refactor from previous 1.x.x versions. After revisiting this codebase I decided that
18
16
  I needed to make SimpleService actually simple in both use and implementation. The gem has now been paired down
19
17
  to about 150 lines of code.
20
18
 
21
- * All functionality is added to your service class via module inclusion instead of inheritance
22
- * The concept of an Organizer has been removed
23
- * The DSL for defining interfaces has been removed in favor of simple keyword arguments
24
- * `#success` or `#failure` must be called within each command or call method
25
- * Services are always invoked via the class method `.call`. Previously you could use either `#call` or `.call`.
19
+ - All functionality is added to your service class via module inclusion instead of inheritance
20
+ - The concept of an Organizer has been removed
21
+ - The DSL for defining interfaces has been removed in favor of simple keyword arguments
22
+ - `#success` or `#failure` must be called within each command or call method
23
+ - Services are always invoked via the class method `.call`. Previously you could use either `#call` or `.call`.
26
24
 
27
25
  ## Installation
28
26
 
@@ -40,10 +38,10 @@ Or install it yourself as:
40
38
 
41
39
  # Setup and Basic Usage:
42
40
 
43
- * load the gem
44
- * include the SimpleService module into your service object class
45
- * define one or more comamnds that it will perform, must accept either keyword arguments or a hash argument
46
- * call `#success` or `#failure` with any values you wish to pass along to the next command (or wish to return if it is the last command)
41
+ - load the gem
42
+ - include the SimpleService module into your service object class
43
+ - define one or more comamnds that it will perform, must accept either keyword arguments or a hash argument
44
+ - call `#success` or `#failure` with any values you wish to pass along to the next command (or wish to return if it is the last command)
47
45
 
48
46
  ```ruby
49
47
  require 'rubygems'
@@ -100,7 +98,7 @@ You can also use ClassNames as commands and to organize them into other files. I
100
98
  defined and no other commands are defined via `command` or `commands` then SimpleService will
101
99
  automatically use `#call` as the default command
102
100
 
103
- ```ruby
101
+ ```ruby
104
102
  require 'rubygems'
105
103
  require 'simple_service'
106
104
 
@@ -144,7 +142,7 @@ result.value #=> {something: 'went wrong'}
144
142
  ```
145
143
 
146
144
  If you would like your service to process an enumerable you can override `.call`
147
- on your service object. Invoking `#super` in your definition and passing along
145
+ on your service object. Invoking `#super` in your definition and passing along
148
146
  the appropriate arguments will allow your command chain to proceed as normal, but
149
147
  called multiple times via a loop. The Result object returned from each call to `#super`
150
148
  can be passed in as an argument to the next iteration or you can collect the result objects
@@ -162,11 +160,11 @@ class LoopingService
162
160
  def self.call(count:)
163
161
  count = kwargs
164
162
 
165
- # In this example the result object from super overwrites
166
- # the previous result/initial args. You could also capture
163
+ # In this example the result object from super overwrites
164
+ # the previous result/initial args. You could also capture
167
165
  # results in an array or hash for further manipulation.
168
166
  # If you do not need to do anything with the result object
169
- # then there is no need to assign it back to anything.
167
+ # then there is no need to assign it back to anything.
170
168
  3.times do
171
169
  count = super(count)
172
170
  end
@@ -179,13 +177,13 @@ class LoopingService
179
177
  end
180
178
  end
181
179
 
182
- result = LoopingService.call(count: 0)
180
+ result = LoopingService.call(count: 0)
183
181
  result.is_a?(SimpleService::Result) #=> true
184
182
  result.value #=> {count: 3}
185
183
  ```
186
184
 
187
- If you are using this with a Rails app, placing top level services in
188
- `app/services/` and all nested commands in `app/services/commands/` is
185
+ If you are using this with a Rails app, placing top level services in
186
+ `app/services/` and all nested commands in `app/services/commands/` is
189
187
  recommended. Even if not using rails, a similar structure also works well.
190
188
 
191
189
  ## Contributing
@@ -1,3 +1,3 @@
1
1
  module SimpleService
2
- VERSION = '2.1.5'
2
+ VERSION = '2.1.6'
3
3
  end
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
  spec.version = SimpleService::VERSION
9
9
  spec.authors = ['Jarrod Spillers']
10
10
  spec.email = ['jarrod@stacktact.com']
11
- spec.description = %q{A minimal service object composer with support for individual commands and top level organizer objects}
11
+ spec.description = %q{A minimal service object composer and orchestrator}
12
12
  spec.summary = spec.description
13
13
  spec.homepage = 'https://github.com/jspillers/simple_service'
14
14
  spec.license = 'MIT'
@@ -18,10 +18,17 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
+ spec.metadata = {
22
+ "bug_tracker_uri" => "#{spec.homepage}/issues",
23
+ "changelog_uri" => "#{spec.homepage}/blob/main/CHANGELOG.md",
24
+ "documentation_uri" => spec.homepage.to_s,
25
+ "homepage_uri" => spec.homepage.to_s,
26
+ "source_code_uri" => spec.homepage.to_s,
27
+ }
28
+
21
29
  spec.add_development_dependency 'bundler'
22
30
  spec.add_development_dependency 'rake', '~> 12.3.3'
23
31
  spec.add_development_dependency 'rspec', '~> 3.12.0'
24
32
  spec.add_development_dependency 'pry', '~> 0.14.2'
25
33
  spec.add_development_dependency 'simplecov'
26
- spec.add_development_dependency 'codeclimate-test-reporter'
27
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple_service
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.5
4
+ version: 2.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jarrod Spillers
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-13 00:00:00.000000000 Z
11
+ date: 2023-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,32 +80,16 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: codeclimate-test-reporter
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- description: A minimal service object composer with support for individual commands
98
- and top level organizer objects
83
+ description: A minimal service object composer and orchestrator
99
84
  email:
100
85
  - jarrod@stacktact.com
101
86
  executables: []
102
87
  extensions: []
103
88
  extra_rdoc_files: []
104
89
  files:
105
- - ".github/workflows/gem-push.yml"
90
+ - ".github/workflows/build_master.yml"
106
91
  - ".gitignore"
107
92
  - ".rspec"
108
- - ".travis.yml"
109
93
  - Gemfile
110
94
  - LICENSE
111
95
  - LICENSE.txt
@@ -128,7 +112,12 @@ files:
128
112
  homepage: https://github.com/jspillers/simple_service
129
113
  licenses:
130
114
  - MIT
131
- metadata: {}
115
+ metadata:
116
+ bug_tracker_uri: https://github.com/jspillers/simple_service/issues
117
+ changelog_uri: https://github.com/jspillers/simple_service/blob/main/CHANGELOG.md
118
+ documentation_uri: https://github.com/jspillers/simple_service
119
+ homepage_uri: https://github.com/jspillers/simple_service
120
+ source_code_uri: https://github.com/jspillers/simple_service
132
121
  post_install_message:
133
122
  rdoc_options: []
134
123
  require_paths:
@@ -147,8 +136,7 @@ requirements: []
147
136
  rubygems_version: 3.4.10
148
137
  signing_key:
149
138
  specification_version: 4
150
- summary: A minimal service object composer with support for individual commands and
151
- top level organizer objects
139
+ summary: A minimal service object composer and orchestrator
152
140
  test_files:
153
141
  - spec/simple_service_spec.rb
154
142
  - spec/spec_helper.rb
@@ -1,45 +0,0 @@
1
- name: Ruby Gem
2
-
3
- on:
4
- push:
5
- branches: [ "master" ]
6
- pull_request:
7
- branches: [ "master" ]
8
-
9
- jobs:
10
- build:
11
- name: Build + Publish
12
- runs-on: ubuntu-latest
13
- permissions:
14
- contents: read
15
- packages: write
16
-
17
- steps:
18
- - uses: actions/checkout@v3
19
- - name: Set up Ruby 2.6
20
- uses: actions/setup-ruby@v1
21
- with:
22
- ruby-version: 2.6.x
23
-
24
- - name: Publish to GPR
25
- run: |
26
- mkdir -p $HOME/.gem
27
- touch $HOME/.gem/credentials
28
- chmod 0600 $HOME/.gem/credentials
29
- printf -- "---\n:github: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
30
- gem build *.gemspec
31
- gem push --KEY github --host https://rubygems.pkg.github.com/${OWNER} *.gem
32
- env:
33
- GEM_HOST_API_KEY: "Bearer ${{secrets.GITHUB_TOKEN}}"
34
- OWNER: ${{ github.repository_owner }}
35
-
36
- - name: Publish to RubyGems
37
- run: |
38
- mkdir -p $HOME/.gem
39
- touch $HOME/.gem/credentials
40
- chmod 0600 $HOME/.gem/credentials
41
- printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
42
- gem build *.gemspec
43
- gem push *.gem
44
- env:
45
- GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
data/.travis.yml DELETED
@@ -1,6 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - jruby-19mode
4
- - 2.3.0
5
- - 2.3.3
6
- - 2.4.2