do_blocks 0.1.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 +7 -0
- data/lib/do_blocks.rb +33 -0
- metadata +58 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 8e191f5654fa705213de23652888c87103720f31d6dd96c29368d54fc8e6da20
|
4
|
+
data.tar.gz: 9a45a3a0c62db75a037539f8ad1d3756e34a63c5d6f801745d855887d626fe7d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 002c4fcc509491e5f12ed8a602a6702e7e2b6f779944bc09a5a4880e3c1526760aa0f02f3d7d08df7805f3f3899a16e5a8ace32be95854fe8d3be0eeaeb911f2
|
7
|
+
data.tar.gz: 331115cef6bccbd5997eeb61c5917b7b092b0b85d124c57886abf85e6fe4cab0b26851ccd7f5ecbdc9adf4d39957e481671ec0683ae30d66e9dc19fb22b47779
|
data/lib/do_blocks.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
module DoBlocks
|
2
|
+
def do_before(method_name, &block)
|
3
|
+
original_method = instance_method(method_name)
|
4
|
+
|
5
|
+
define_method(method_name) do |*args, **kwargs|
|
6
|
+
block.call(args, kwargs)
|
7
|
+
original_method.bind(self).call(*args, **kwargs)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
def do_after(method_name, &block)
|
12
|
+
original_method = instance_method(method_name)
|
13
|
+
|
14
|
+
define_method(method_name) do |*args, **kwargs|
|
15
|
+
result = original_method.bind(self).call(*args, **kwargs)
|
16
|
+
block.call(args, kwargs, result)
|
17
|
+
result
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def do_on_error(method_name, reraise: true, &block)
|
22
|
+
original_method = instance_method(method_name)
|
23
|
+
|
24
|
+
define_method(method_name) do |*args, **kwargs|
|
25
|
+
begin
|
26
|
+
original_method.bind(self).call(*args, **kwargs)
|
27
|
+
rescue => error
|
28
|
+
block.call(args, kwargs, error)
|
29
|
+
raise error if reraise
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
metadata
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: do_blocks
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Matheus Portela
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2024-02-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.0'
|
27
|
+
description: This gem allows classes to easily define blocks that are executed before
|
28
|
+
a method run, after a method run, or when an error occurs during the method's execution.
|
29
|
+
email:
|
30
|
+
executables: []
|
31
|
+
extensions: []
|
32
|
+
extra_rdoc_files: []
|
33
|
+
files:
|
34
|
+
- lib/do_blocks.rb
|
35
|
+
homepage: https://github.com/matheusportela/do_blocks
|
36
|
+
licenses:
|
37
|
+
- MIT
|
38
|
+
metadata: {}
|
39
|
+
post_install_message:
|
40
|
+
rdoc_options: []
|
41
|
+
require_paths:
|
42
|
+
- lib
|
43
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 3.0.0
|
48
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '0'
|
53
|
+
requirements: []
|
54
|
+
rubygems_version: 3.5.6
|
55
|
+
signing_key:
|
56
|
+
specification_version: 4
|
57
|
+
summary: Useful before, after, and on error blocks for methods
|
58
|
+
test_files: []
|