Class: NuHttp::Builder
- Inherits:
-
Object
- Object
- NuHttp::Builder
- Defined in:
- lib/nuhttp/builder.rb
Instance Method Summary collapse
- #build ⇒ Object
-
#get(path, &block) ⇒ Object
The
nuhttp-typegentool can be used to generated RBS type signatures tailored for each app. -
#initialize(ractor_compat: false) ⇒ Builder
constructor
A new instance of Builder.
-
#mount(path, subapp) ⇒ Object
: (String, NuHttp::App) -> void.
-
#post(path, &block) ⇒ Object
The
nuhttp-typegentool can be used to generated RBS type signatures tailored for each app.
Constructor Details
#initialize(ractor_compat: false) ⇒ Builder
Returns a new instance of Builder.
6 7 8 9 |
# File 'lib/nuhttp/builder.rb', line 6 def initialize(ractor_compat: false) @router = Router.new @ractor_compat = ractor_compat end |
Instance Method Details
#build ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/nuhttp/builder.rb', line 11 def build if @ractor_compat @router.routes.freeze Ractor.make_shareable @router raise if !Ractor.shareable?(@router) end App.new(@router).tap do |app| app.freeze if @ractor_compat end end |
#get(path, &block) ⇒ Object
The nuhttp-typegen tool can be used to generated RBS type signatures
tailored for each app.
25 26 27 28 29 30 31 32 |
# File 'lib/nuhttp/builder.rb', line 25 def get(path, &block) if @ractor_compat shareable_block = Ractor.shareable_proc(&block) @router.register_route(:get, path, &shareable_block) else @router.register_route(:get, path, &block) end end |
#mount(path, subapp) ⇒ Object
: (String, NuHttp::App) -> void
47 48 49 50 51 52 53 54 55 |
# File 'lib/nuhttp/builder.rb', line 47 def mount(path, subapp) subapp.routes.each do |route| @router.register_route( route.method, path + route.pattern, &route.handler ) end end |
#post(path, &block) ⇒ Object
The nuhttp-typegen tool can be used to generated RBS type signatures
tailored for each app.
37 38 39 40 41 42 43 44 |
# File 'lib/nuhttp/builder.rb', line 37 def post(path, &block) if @ractor_compat shareable_block = Ractor.shareable_proc(&block) @router.register_route(:post, path, &shareable_block) else @router.register_route(:post, path, &block) end end |