simple_service_provider 0.0.1
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.
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
module SimpleServiceProvider
|
|
2
|
+
class Base
|
|
3
|
+
include Virtus
|
|
4
|
+
include ActiveModel::Validations
|
|
5
|
+
extend ActiveModel::Callbacks
|
|
6
|
+
|
|
7
|
+
define_model_callbacks :work
|
|
8
|
+
|
|
9
|
+
def work(options = {})
|
|
10
|
+
run_callbacks :work do
|
|
11
|
+
begin
|
|
12
|
+
perform_validations(options) { run }
|
|
13
|
+
rescue SimpleServiceProvider::RecordInvalid => ex
|
|
14
|
+
$stdout.puts "The consultant could not perform the work because the following errors : " + ex.message
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def run
|
|
20
|
+
raise NotImplementedError
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def work!(options = {})
|
|
24
|
+
run_callbacks :work do
|
|
25
|
+
perform_validations(options) { run! }
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def run!
|
|
30
|
+
run
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
private
|
|
34
|
+
|
|
35
|
+
def perform_validations(options = {})
|
|
36
|
+
options.reverse_merge!(:validate => true)
|
|
37
|
+
if options[:validate] && valid?
|
|
38
|
+
yield if block_given?
|
|
39
|
+
else
|
|
40
|
+
raise SimpleServiceProvider::RecordInvalid.new(self)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
module SimpleServiceProvider
|
|
2
|
+
class SimpleServiceProviderError < StandardError
|
|
3
|
+
end
|
|
4
|
+
|
|
5
|
+
class RecordInvalid < SimpleServiceProviderError
|
|
6
|
+
def initialize(consultant)
|
|
7
|
+
@consultant = consultant
|
|
8
|
+
error_msg = @consultant.errors.full_messages.join(",")
|
|
9
|
+
super(error_msg)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# This module serves as the main namespace for the gem.
|
|
2
|
+
require "simple_service_provider/version"
|
|
3
|
+
require "virtus"
|
|
4
|
+
require "active_model"
|
|
5
|
+
|
|
6
|
+
module SimpleServiceProvider
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
require "simple_service_provider/errors.rb"
|
|
10
|
+
require "simple_service_provider/base"
|
metadata
ADDED
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: simple_service_provider
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
prerelease:
|
|
6
|
+
platform: ruby
|
|
7
|
+
authors:
|
|
8
|
+
- Suman Mukherjee
|
|
9
|
+
autorequire:
|
|
10
|
+
bindir: bin
|
|
11
|
+
cert_chain: []
|
|
12
|
+
date: 2013-06-10 00:00:00.000000000 Z
|
|
13
|
+
dependencies:
|
|
14
|
+
- !ruby/object:Gem::Dependency
|
|
15
|
+
name: virtus
|
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
|
17
|
+
none: false
|
|
18
|
+
requirements:
|
|
19
|
+
- - ! '>='
|
|
20
|
+
- !ruby/object:Gem::Version
|
|
21
|
+
version: '0'
|
|
22
|
+
type: :runtime
|
|
23
|
+
prerelease: false
|
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
25
|
+
none: false
|
|
26
|
+
requirements:
|
|
27
|
+
- - ! '>='
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: '0'
|
|
30
|
+
- !ruby/object:Gem::Dependency
|
|
31
|
+
name: activemodel
|
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
|
33
|
+
none: false
|
|
34
|
+
requirements:
|
|
35
|
+
- - ! '>='
|
|
36
|
+
- !ruby/object:Gem::Version
|
|
37
|
+
version: '0'
|
|
38
|
+
type: :runtime
|
|
39
|
+
prerelease: false
|
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
41
|
+
none: false
|
|
42
|
+
requirements:
|
|
43
|
+
- - ! '>='
|
|
44
|
+
- !ruby/object:Gem::Version
|
|
45
|
+
version: '0'
|
|
46
|
+
- !ruby/object:Gem::Dependency
|
|
47
|
+
name: bundler
|
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
|
49
|
+
none: false
|
|
50
|
+
requirements:
|
|
51
|
+
- - ~>
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '1.3'
|
|
54
|
+
type: :development
|
|
55
|
+
prerelease: false
|
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
57
|
+
none: false
|
|
58
|
+
requirements:
|
|
59
|
+
- - ~>
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '1.3'
|
|
62
|
+
- !ruby/object:Gem::Dependency
|
|
63
|
+
name: rake
|
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
|
65
|
+
none: false
|
|
66
|
+
requirements:
|
|
67
|
+
- - ! '>='
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
version: '0'
|
|
70
|
+
type: :development
|
|
71
|
+
prerelease: false
|
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
73
|
+
none: false
|
|
74
|
+
requirements:
|
|
75
|
+
- - ! '>='
|
|
76
|
+
- !ruby/object:Gem::Version
|
|
77
|
+
version: '0'
|
|
78
|
+
description: A gem that provides a simple interface for service objects
|
|
79
|
+
email:
|
|
80
|
+
- sumanmukherjee03@gmail.com
|
|
81
|
+
executables: []
|
|
82
|
+
extensions: []
|
|
83
|
+
extra_rdoc_files: []
|
|
84
|
+
files:
|
|
85
|
+
- lib/simple_service_provider/base.rb
|
|
86
|
+
- lib/simple_service_provider/errors.rb
|
|
87
|
+
- lib/simple_service_provider/version.rb
|
|
88
|
+
- lib/simple_service_provider.rb
|
|
89
|
+
homepage: http://github.com/sumanmukherjee03/simple_service_provider
|
|
90
|
+
licenses:
|
|
91
|
+
- MIT
|
|
92
|
+
post_install_message:
|
|
93
|
+
rdoc_options: []
|
|
94
|
+
require_paths:
|
|
95
|
+
- lib
|
|
96
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
97
|
+
none: false
|
|
98
|
+
requirements:
|
|
99
|
+
- - ! '>='
|
|
100
|
+
- !ruby/object:Gem::Version
|
|
101
|
+
version: '0'
|
|
102
|
+
segments:
|
|
103
|
+
- 0
|
|
104
|
+
hash: 2364884446985329102
|
|
105
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
|
+
none: false
|
|
107
|
+
requirements:
|
|
108
|
+
- - ! '>='
|
|
109
|
+
- !ruby/object:Gem::Version
|
|
110
|
+
version: '0'
|
|
111
|
+
segments:
|
|
112
|
+
- 0
|
|
113
|
+
hash: 2364884446985329102
|
|
114
|
+
requirements: []
|
|
115
|
+
rubyforge_project:
|
|
116
|
+
rubygems_version: 1.8.25
|
|
117
|
+
signing_key:
|
|
118
|
+
specification_version: 3
|
|
119
|
+
summary: This gem ties down the interface for your service objects, providing a consistent
|
|
120
|
+
structure to your service objects and keeping them single responsible.
|
|
121
|
+
test_files: []
|