cater 0.1.0 → 0.2.0
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/README.md +35 -4
- data/cater.gemspec +2 -0
- data/circle.yml +3 -0
- data/lib/cater/service.rb +41 -71
- data/lib/cater/version.rb +1 -1
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a70b24427d3f3da3eae3d0f13c10063596d3c9ef
|
4
|
+
data.tar.gz: be28add58ddf410018e4890b9a2f7855bd89a38e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1bb2b4e33a008586e697b1fbae4ce84482d3ab201ee7ad84810f9325734137766d6193a1e2eeee1b3494bbc2425c952466aef9950ac6211096b42811addfc42b
|
7
|
+
data.tar.gz: 49f3e59219bdd005838c6943bc82566c5878c352476ddbb0c17064609a64cbb536fc1026a3fec752d77815445ed4c5cd2b51b96b4d051f0ba465aea8df99aa0a
|
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
|
1
|
+
[](https://circleci.com/gh/rubakas/cater)
|
2
2
|
|
3
|
-
|
3
|
+
# Cater
|
4
4
|
|
5
|
-
|
5
|
+
Cater is a modular implementation of ServiceObject pattern
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
@@ -22,7 +22,36 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
-
|
25
|
+
```ruby
|
26
|
+
class MyBusinessBehavior
|
27
|
+
# include module
|
28
|
+
include ::Cater::Service
|
29
|
+
|
30
|
+
after_serve :_log_stuff
|
31
|
+
|
32
|
+
def serve(parameter)
|
33
|
+
error! unless parameter
|
34
|
+
end
|
35
|
+
|
36
|
+
def _log_stuff
|
37
|
+
Rails.logger.fatal("Stuff logged")
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
# Now feel free to invoke .serve class method
|
42
|
+
successful_service = MyBusinessBehavior.serve(true)
|
43
|
+
successful_service.success?
|
44
|
+
# true
|
45
|
+
successful_service.error?
|
46
|
+
# false
|
47
|
+
|
48
|
+
error_service = MyBusinessBehavior.serve(false)
|
49
|
+
error_service.error?
|
50
|
+
# true
|
51
|
+
error_service.success?
|
52
|
+
# false
|
53
|
+
|
54
|
+
```
|
26
55
|
|
27
56
|
## Development
|
28
57
|
|
@@ -32,6 +61,8 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
32
61
|
|
33
62
|
## Contributing
|
34
63
|
|
64
|
+
Please stick to `git flow` branch convention
|
65
|
+
|
35
66
|
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/cater. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
36
67
|
|
37
68
|
|
data/cater.gemspec
CHANGED
@@ -27,6 +27,8 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
28
|
spec.require_paths = ["lib"]
|
29
29
|
|
30
|
+
spec.add_dependency "activesupport", ">= 4.2.5"
|
31
|
+
|
30
32
|
spec.add_development_dependency "bundler", "~> 1.11"
|
31
33
|
spec.add_development_dependency "rake", "~> 10.0"
|
32
34
|
spec.add_development_dependency "minitest", "~> 5.0"
|
data/circle.yml
ADDED
data/lib/cater/service.rb
CHANGED
@@ -1,40 +1,58 @@
|
|
1
|
+
require 'active_support/concern'
|
2
|
+
require 'active_support/callbacks'
|
3
|
+
|
1
4
|
module Cater
|
2
5
|
class ServiceError < Exception; end
|
3
6
|
|
4
7
|
module Service
|
5
|
-
|
6
|
-
base.extend ClassMethods
|
7
|
-
base.class_eval do
|
8
|
-
attr_accessor :message
|
8
|
+
extend ActiveSupport::Concern
|
9
9
|
|
10
|
-
|
11
|
-
|
12
|
-
@_service_success
|
13
|
-
end
|
10
|
+
included do
|
11
|
+
include ActiveSupport::Callbacks
|
14
12
|
|
15
|
-
|
16
|
-
|
17
|
-
raise ServiceError
|
18
|
-
end
|
13
|
+
attr_accessor :message
|
14
|
+
define_callbacks :serve
|
19
15
|
|
20
|
-
|
21
|
-
|
22
|
-
|
16
|
+
def success?
|
17
|
+
fail "Service was not called yet" if @_service_success.nil?
|
18
|
+
@_service_success
|
19
|
+
end
|
23
20
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
21
|
+
def error!(message=nil)
|
22
|
+
message = message
|
23
|
+
raise ServiceError
|
24
|
+
end
|
25
|
+
|
26
|
+
def error?
|
27
|
+
!success?
|
28
|
+
end
|
29
29
|
|
30
|
+
private
|
31
|
+
|
32
|
+
def _service_success=(result)
|
33
|
+
@_service_success = result
|
30
34
|
end
|
31
35
|
end
|
32
36
|
|
33
|
-
|
37
|
+
class_methods do
|
38
|
+
def after_serve(*filters, &blk)
|
39
|
+
set_callback(:serve, :after, *filters, &blk)
|
40
|
+
end
|
41
|
+
|
42
|
+
def around_serve(*filters, &blk)
|
43
|
+
set_callback(:serve, :around, *filters, &blk)
|
44
|
+
end
|
45
|
+
|
46
|
+
def before_serve(*filters, &blk)
|
47
|
+
set_callback(:serve, :before, *filters, &blk)
|
48
|
+
end
|
49
|
+
|
34
50
|
def serve(*args)
|
35
51
|
instance = self.new
|
36
52
|
begin
|
37
|
-
instance.serve
|
53
|
+
instance.run_callbacks :serve do
|
54
|
+
instance.serve(*args)
|
55
|
+
end
|
38
56
|
instance.send(:_service_success=, true)
|
39
57
|
rescue ServiceError
|
40
58
|
instance.send(:_service_success=, false)
|
@@ -45,52 +63,4 @@ module Cater
|
|
45
63
|
end
|
46
64
|
|
47
65
|
end
|
48
|
-
end
|
49
|
-
|
50
|
-
|
51
|
-
# require 'active_support/concern'
|
52
|
-
|
53
|
-
# module Service
|
54
|
-
|
55
|
-
# class ServiceError < Exception; end
|
56
|
-
# extend ActiveSupport::Concern
|
57
|
-
|
58
|
-
# included do
|
59
|
-
# attr_accessor :success, :message
|
60
|
-
|
61
|
-
# def success?
|
62
|
-
# fail "Service was not called!" if success.nil?
|
63
|
-
# !!success
|
64
|
-
# end
|
65
|
-
|
66
|
-
# def error?
|
67
|
-
# fail "Service was not called!" if success.nil?
|
68
|
-
# !success
|
69
|
-
# end
|
70
|
-
|
71
|
-
# def error(message=nil)
|
72
|
-
# message = message
|
73
|
-
# fail ServiceError.new(message)
|
74
|
-
# end
|
75
|
-
# end
|
76
|
-
|
77
|
-
# class_methods do
|
78
|
-
# def sync_execution_method(method_name)
|
79
|
-
# end
|
80
|
-
|
81
|
-
# def async_execution_method(method_name)
|
82
|
-
# end
|
83
|
-
|
84
|
-
# def call(*args)
|
85
|
-
# begin
|
86
|
-
# instance = self.new(*args)
|
87
|
-
# instance.call!
|
88
|
-
# instance.success = true
|
89
|
-
# rescue ServiceError
|
90
|
-
# instance.success = false
|
91
|
-
# end
|
92
|
-
# instance
|
93
|
-
# end
|
94
|
-
# end
|
95
|
-
|
96
|
-
# end
|
66
|
+
end
|
data/lib/cater/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,29 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cater
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andriy Tyurnikov
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-01-
|
11
|
+
date: 2016-01-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.2.5
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 4.2.5
|
13
27
|
- !ruby/object:Gem::Dependency
|
14
28
|
name: bundler
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -69,6 +83,7 @@ files:
|
|
69
83
|
- bin/console
|
70
84
|
- bin/setup
|
71
85
|
- cater.gemspec
|
86
|
+
- circle.yml
|
72
87
|
- lib/cater.rb
|
73
88
|
- lib/cater/service.rb
|
74
89
|
- lib/cater/version.rb
|