Skip to content

Commit 374e55a

Browse files
committed
update
1 parent eafece1 commit 374e55a

5 files changed

Lines changed: 103 additions & 6 deletions

File tree

Gemfile.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
PATH
22
remote: .
33
specs:
4-
dry-stack (0.1.55)
4+
dry-stack (0.1.57)
55

66
GEM
77
remote: https://rubygems.org/

lib/dry-stack/stack.rb

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -415,18 +415,31 @@ def After(&block)
415415
(@after_blocks ||=[]) << block
416416
end
417417

418+
def normalize_service_hook_args(name, opts)
419+
if name.is_a?(Hash) && opts.empty?
420+
opts = name
421+
name = nil
422+
end
423+
424+
opts = opts.dup
425+
except = [opts.delete(:except)].flatten.compact
426+
[[name].flatten.compact, opts, except]
427+
end
428+
418429
def BeforeService(name = nil, opts = {}, &block)
419-
(@before_blocks ||=[]).push names: [name].flatten.compact, except: opts[:except],
430+
names, opts, except = normalize_service_hook_args(name, opts)
431+
(@before_blocks ||=[]).push names:, except:,
420432
block: ->(s_name) {
421433
_ServiceImplementation s_name, opts, &block
422434
}
423435
end
424436

425437
def AfterService(name = nil, opts = {}, &block)
438+
names, opts, except = normalize_service_hook_args(name, opts)
426439
After do
427-
names = [name || @services.keys].flatten
428-
names -= [opts[:except]].flatten if opts.key? :except
429-
names.each do |s_name|
440+
hook_names = names.empty? ? @services.keys : names
441+
hook_names -= except
442+
hook_names.each do |s_name|
430443
_ServiceImplementation s_name, opts, &block
431444
end
432445
end

lib/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
module Dry
22
class Stack
3-
VERSION = '0.1.56'
3+
VERSION = '0.1.57'
44
end
55
end

spec/data/stack20-compose.yml

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
---
2+
version: '3.8'
3+
services:
4+
front:
5+
environment:
6+
BEFORE_HOOK: enabled
7+
TEST2: enabled
8+
TEST1: enabled
9+
STACK_NAME: stack
10+
STACK_SERVICE_NAME: front
11+
deploy:
12+
labels:
13+
- traefik.enable=true
14+
- traefik.http.routers.stack_front-0.service=stack_front-0
15+
- traefik.http.middlewares.stack_front-0_oauth_provider.forwardauth.address=http://oauth2_slim:7000/auth
16+
- traefik.http.middlewares.stack_front-0_oauth_provider.forwardauth.authResponseHeadersRegex=^X-
17+
- traefik.http.routers.stack_front-0.rule=HostRegexp(`{name:front\..*}`)
18+
- traefik.http.routers.stack_front-0.middlewares=stack_front-0_oauth_provider
19+
networks:
20+
default:
21+
ingress_routing:
22+
init: true
23+
image: frontend
24+
admin:
25+
environment:
26+
TEST2: enabled
27+
STACK_NAME: stack
28+
STACK_SERVICE_NAME: admin
29+
deploy:
30+
labels:
31+
- traefik.enable=true
32+
- traefik.http.routers.stack_admin-0.service=stack_admin-0
33+
- traefik.http.routers.stack_admin-0.rule=HostRegexp(`{name:admin\..*}`)
34+
networks:
35+
default:
36+
ingress_routing:
37+
init: true
38+
image: admin
39+
worker:
40+
environment:
41+
BEFORE_HOOK: enabled
42+
TEST2: enabled
43+
STACK_NAME: stack
44+
STACK_SERVICE_NAME: worker
45+
deploy:
46+
labels:
47+
- traefik.enable=true
48+
- traefik.http.routers.stack_worker-0.service=stack_worker-0
49+
- traefik.http.middlewares.stack_worker-0_oauth_provider.forwardauth.address=http://oauth2_slim:7000/auth
50+
- traefik.http.middlewares.stack_worker-0_oauth_provider.forwardauth.authResponseHeadersRegex=^X-
51+
- traefik.http.routers.stack_worker-0.rule=HostRegexp(`{name:worker\..*}`)
52+
- traefik.http.routers.stack_worker-0.middlewares=stack_worker-0_oauth_provider
53+
networks:
54+
default:
55+
ingress_routing:
56+
init: true
57+
image: worker
58+
networks:
59+
ingress_routing:
60+
external: true
61+
name: ingress-routing

spec/data/stack20.drs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
Service :front, image: 'frontend' do
2+
ingress host: 'front.*'
3+
end
4+
Service :admin, image: 'admin' do
5+
ingress host: 'admin.*'
6+
end
7+
Service :worker, image: 'worker' do
8+
ingress host: 'worker.*'
9+
end
10+
11+
BeforeService except: [:admin] do
12+
env BEFORE_HOOK: 'enabled'
13+
oauth_provider 'oauth2_slim:7000/auth'
14+
end
15+
16+
BeforeService do
17+
env TEST2: 'enabled'
18+
end
19+
20+
BeforeService %i[front] do
21+
env TEST1: 'enabled'
22+
end
23+

0 commit comments

Comments
 (0)