Skip to content

Instantly share code, notes, and snippets.

View rafaels88's full-sized avatar
🔮
coming up with something

Rafael Soares dos Santos rafaels88

🔮
coming up with something
View GitHub Profile
@rafaels88
rafaels88 / quiqup.opus_specific_stage.ex
Created September 11, 2018 10:36
Quiqup - Opus Specific Stage
Quiqup.DispatchOrderStagePipeline.call(%{order: order}, only: [:valid_input?])
Quiqup.DispatchOrderStagePipeline.call(%{order: order}, except: [:push_notification, :emit_event])
@rafaels88
rafaels88 / quiqup.opus_instrumentation.ex
Created September 11, 2018 10:37
Quiqup - Opus Instrumentation
defmodule Quiqup.DispatchOrderStagePipeline do
step :persist
instrument :stage_completed, %{stage: %{name: :persist}}, fn %{time: time} ->
# send to the monitoring tool of your choice
end
end
@rafaels88
rafaels88 / quiqup.pipeline_instrumentation.ex
Created September 11, 2018 10:38
Quiqup - Opus Pipeline Instrumentation
defmodule PipelineInstrumentation do
def instrument(:pipeline_started, %{pipeline: Quiqup.DispatchOrderStagePipeline}, %{input: input}) do
# publish the metrics to a specific backend
end
def instrument(:stage_completed, %{stage: %{pipeline: Quiqup.DispatchOrderStagePipeline}}, %{time: time}) do
# publish the metrics to a specific backend
end
end
@rafaels88
rafaels88 / quiqup.opus_pipeline_call.ex
Created September 13, 2018 05:07
Quiqup - Calling an Opus Pipeline
Quiqup.DispatchOrderStagePipeline.call(%{order: order})
@rafaels88
rafaels88 / quiqup.opus_raise_module.ex
Created September 13, 2018 05:08
Quiqup - Opus raise entire module
defmodule Quiqup.DispatchOrderStagePipeline do
use Opus.Pipeline, raise: true
# ...
end
@rafaels88
rafaels88 / quiqup.opus_disable_module_instrumentation.ex
Created September 13, 2018 05:10
Quiqup - Opus disable module instrumentation
defmodule Quiqup.DispatchOrderStagePipeline do
use Opus.Pipeline, instrument?: false
# ...
end
@rafaels88
rafaels88 / quiqup.opus_skip_stage.ex
Created September 13, 2018 05:11
Quiqup - Opus skip stage
defmodule Quiqup.DispatchOrderStagePipeline do
use Opus.Pipeline
# ...
skip if: :job_is_finished?
# ...
@spec job_is_finished?(map()) :: bool()
end