mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
DEV: Drop WithServiceHelper
This patch removes the `with_service` helper from the code base. Instead, we can pass a block with actions directly to the `.call` method of a service. This simplifies how to use services: - use `.call` without a block to run the service and get its result object. - use `.call` with a block of actions to run the service and execute arbitrary code depending on the service outcome. It also means a service is now “self-contained” and can be used anywhere without having to include a helper or whatever.
This commit is contained in:
committed by
Loïc Guitaut
parent
c76ff5c994
commit
e94707acdf
@@ -1,27 +0,0 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
module WithServiceHelper
|
||||
def result
|
||||
@_result
|
||||
end
|
||||
|
||||
# @param service [Class] A class including {Service::Base}
|
||||
# @param dependencies [kwargs] Any additional params to load into the service context,
|
||||
# in addition to controller @params.
|
||||
def with_service(service, **dependencies, &block)
|
||||
object = self
|
||||
ServiceRunner.call(
|
||||
service,
|
||||
object,
|
||||
**dependencies,
|
||||
&proc { instance_exec(&(block || proc {})) }
|
||||
)
|
||||
end
|
||||
|
||||
def run_service(service, dependencies)
|
||||
params = self.try(:params) || ActionController::Parameters.new
|
||||
|
||||
@_result =
|
||||
service.call(params.to_unsafe_h.merge(guardian: self.try(:guardian) || nil, **dependencies))
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user