Skip to content

Commit 9746b3a

Browse files
authored
Merge pull request #9 from GetDutchie/0.5.2
v0.5.2
2 parents 04991c6 + bd12068 commit 9746b3a

File tree

4 files changed

+15
-5
lines changed

4 files changed

+15
-5
lines changed

lib/twirp/rails/helpers/hooks.rb

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,13 @@ def initialize(service_wrapper, **options)
1818
end
1919

2020
module ClassMethods
21-
def attach(service_wrapper, **options)
21+
def bypass?(env, only=[], except=[])
22+
return true if only.present? && !only.include?(env[:ruby_method])
23+
return true if except.present? && except.include?(env[:ruby_method])
24+
false
25+
end
26+
27+
def attach(service_wrapper, only: [], except: [], **options)
2228
hook_instance = self.new(service_wrapper, **options)
2329

2430
unless HOOK_METHODS.any? {|method| hook_instance.respond_to?(method)}
@@ -29,24 +35,28 @@ def attach(service_wrapper, **options)
2935

3036
if hook_instance.respond_to?(:before)
3137
service_wrapper.before do |rack_env, env|
38+
next if bypass?(env, only, except)
3239
hook_instance.before(rack_env, env)
3340
end
3441
end
3542

3643
if hook_instance.respond_to?(:on_success)
3744
service_wrapper.on_success do |env|
45+
next if bypass?(env, only, except)
3846
hook_instance.on_success(env)
3947
end
4048
end
4149

4250
if hook_instance.respond_to?(:on_error)
4351
service_wrapper.on_error do |twerr, env|
52+
next if bypass?(env, only, except)
4453
hook_instance.on_error(twerr, env)
4554
end
4655
end
4756

4857
if hook_instance.respond_to?(:exception_raised)
4958
service_wrapper.exception_raised do |e, env|
59+
next if bypass?(env, only, except)
5060
hook_instance.exception_raised(e, env)
5161
end
5262
end

lib/twirp/rails/helpers/services.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def bind(service_klass, namespace: nil, context: nil, hooks: [])
4242
end
4343
end
4444

45-
hooks = hooks + all_base_hooks
45+
hooks = all_base_hooks + hooks
4646

4747
service_wrapper = Twirp::Rails::ServiceWrapper.new(service_klass.new(new))
4848

lib/twirp/rails/routes.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,8 @@ def generate_routes!(mount_namespace, options)
7171
end
7272

7373
def attach_service_hooks!(service_wrapper, hooks)
74-
hooks.each do |hook_klass:, options: {}|
75-
hook_klass.attach service_wrapper, options
74+
hooks.each do |hook_klass:, only: [], except: [], options: {}|
75+
hook_klass.attach(service_wrapper, only: only, except: except, **options)
7676
end
7777
end
7878
end

lib/twirp/rails/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module Twirp
22
module Rails
3-
VERSION = "0.5.1"
3+
VERSION = "0.5.2"
44
end
55
end

0 commit comments

Comments
 (0)