simple_service_provider 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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,3 @@
1
+ module SimpleServiceProvider
2
+ VERSION = "0.0.1"
3
+ 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: []