forked from collectiveidea/interactor
-
Notifications
You must be signed in to change notification settings - Fork 0
Multiple hooks
beNjiox edited this page Oct 5, 2014
·
2 revisions
An interactor can define multiple before/after hooks, allowing common hooks to be extracted into interactor concerns.
Here is an example:
# app/interactors/welcome_user.rb
class WelcomeUser
include Interactor
include LogInteractor
before do
Rails.logger.info 'Prepare the welcome user action'
end
after do
Rails.logger.info 'Clean up after the welcome user action'
end
def perform
puts 'Perform WelcomeUser'
end
end# libs/log_interactor.rb
module LogInteractor
extend ActiveSupport::Concern
included do
before do
Rails.logger.info 'before Interactor'
end
after do
Rails.logger.info 'after Interactor'
end
end
end# app/controllers/welcome_controller.rb
class WelcomeController < ApplicationController
def index
WelcomeUser.call
end
endNow let's say we have a route pointing to our WelcomeController#index method.
get '/welcome', to: 'welcome#index'# curl http://0.0.0.0:3000/welcome
before Interactor
Prepare the user login action
Clean up after the user login action
after Interactor