custom_exceptions 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.
- checksums.yaml +7 -0
- data/lib/custom_exceptions/base.rb +4 -0
- data/lib/custom_exceptions/string.rb +5 -0
- data/lib/custom_exceptions.rb +66 -0
- metadata +75 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: ae5d982b3bc58a5d95669fd012157b977cd61bb7
|
|
4
|
+
data.tar.gz: d69b401d337cb84a763ac4b4da36cc682e8642a5
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 048f2a46a725168716cbb4ba12c2dd395d86c57385a513b0a6b71275aa0b76ca7450d69e3d1b8eae2a745157237c5905cee1df505e1b14a58bb5d573e4a584e2
|
|
7
|
+
data.tar.gz: 985d7a33c1fbf7ef7ad7826e8bc8e8dfb0b1e5ab8ba1cec2bceb08e38442c15d85dcfd518f65138d7d73498ff661cfc6da6634cacd0f57fd2bd311b200110cc3
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
require_relative 'custom_exceptions/base'
|
|
2
|
+
require_relative 'custom_exceptions/string'
|
|
3
|
+
require 'yaml'
|
|
4
|
+
|
|
5
|
+
module CustomExceptions
|
|
6
|
+
|
|
7
|
+
VERSION = "0.0.1"
|
|
8
|
+
|
|
9
|
+
class << self
|
|
10
|
+
|
|
11
|
+
def load(file)
|
|
12
|
+
@config = YAML.load_file(file)
|
|
13
|
+
define_exceptions
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def error_constants
|
|
17
|
+
@config.each_with_object({}) do |const, hash|
|
|
18
|
+
hash[const.first] = const.last
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def define_exceptions
|
|
23
|
+
error_constants.each do |name, error_body|
|
|
24
|
+
klass = Class.new(CustomExceptions::Base)
|
|
25
|
+
klass.send(:define_method, :initialize) do |options={}|
|
|
26
|
+
@metadata = options[:metadata]
|
|
27
|
+
@code = options[:code]
|
|
28
|
+
@message = options[:message]
|
|
29
|
+
@status = options[:status]
|
|
30
|
+
end
|
|
31
|
+
klass.send(:define_method, :metadata) { @metadata || error_body["metadata"] }
|
|
32
|
+
klass.send(:define_method, :code) { @code || error_body["code"]}
|
|
33
|
+
klass.send(:define_method, :message) { @message || error_body["message"] }
|
|
34
|
+
klass.send(:define_method, :status) { @status || error_body["status"]}
|
|
35
|
+
CustomExceptions.send(:remove_const, name.to_s.classify) if CustomExceptions.const_defined?(name.to_s.classify)
|
|
36
|
+
CustomExceptions.const_set(name.to_s.classify, klass)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def exception(class_name)
|
|
41
|
+
if const_defined?(class_name)
|
|
42
|
+
CustomExceptions.const_get(class_name)
|
|
43
|
+
else
|
|
44
|
+
runtime_exception(class_name)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def runtime_exception(name)
|
|
49
|
+
klass = Class.new(CustomExceptions::Base)
|
|
50
|
+
klass.send(:define_method, :initialize) do |options={}|
|
|
51
|
+
@metadata = options[:metadata]
|
|
52
|
+
@code = options[:code]
|
|
53
|
+
@message = options[:message] || name.to_s.split("_").join(' ').downcase.capitalize
|
|
54
|
+
@status = options[:status] || 500
|
|
55
|
+
end
|
|
56
|
+
klass.send(:define_method, :metadata) { @metadata }
|
|
57
|
+
klass.send(:define_method, :code) { @code }
|
|
58
|
+
klass.send(:define_method, :message) { @message }
|
|
59
|
+
klass.send(:define_method, :status) { @status }
|
|
60
|
+
CustomExceptions.send(:remove_const, name.to_s.classify) if CustomExceptions.const_defined?(name.to_s.classify)
|
|
61
|
+
CustomExceptions.const_set(name.to_s.classify, klass)
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: custom_exceptions
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.1
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Sreekanth GS
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2016-10-12 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: rspec
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rdoc
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
41
|
+
description: CustomExceptions allows generation of custom exception classes from yaml
|
|
42
|
+
config files or at runtime to be used in Ruby or RubyonRails
|
|
43
|
+
email: mail@sreekanth.in
|
|
44
|
+
executables: []
|
|
45
|
+
extensions: []
|
|
46
|
+
extra_rdoc_files: []
|
|
47
|
+
files:
|
|
48
|
+
- lib/custom_exceptions.rb
|
|
49
|
+
- lib/custom_exceptions/base.rb
|
|
50
|
+
- lib/custom_exceptions/string.rb
|
|
51
|
+
homepage: http://github.com/sreekanthgs/custom_exceptions
|
|
52
|
+
licenses: []
|
|
53
|
+
metadata: {}
|
|
54
|
+
post_install_message:
|
|
55
|
+
rdoc_options: []
|
|
56
|
+
require_paths:
|
|
57
|
+
- lib
|
|
58
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
59
|
+
requirements:
|
|
60
|
+
- - ">="
|
|
61
|
+
- !ruby/object:Gem::Version
|
|
62
|
+
version: '0'
|
|
63
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - ">="
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '0'
|
|
68
|
+
requirements: []
|
|
69
|
+
rubyforge_project:
|
|
70
|
+
rubygems_version: 2.5.1
|
|
71
|
+
signing_key:
|
|
72
|
+
specification_version: 4
|
|
73
|
+
summary: CustomExceptions generates custom exception classes to be used in Ruby or
|
|
74
|
+
RubyonRails
|
|
75
|
+
test_files: []
|