Class: Inquirex::Actions::Outbox

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/inquirex/actions/outbox.rb

Overview

Collected output of running a definition's actions: the Mail::Message objects built by send_email effects, plus a per-execution result trail.

The outbox is attached to Answers#outbox and is intentionally excluded from Answers serialization — mail objects never leak into persisted answer data. Delivery is the host application's job:

answers.outbox.each do |message|
ActionMailer::Base.wrap_delivery_behavior(message)
message.deliver
end

Defined Under Namespace

Classes: Result

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeOutbox

Returns a new instance of Outbox.



25
26
27
28
# File 'lib/inquirex/actions/outbox.rb', line 25

def initialize
  @messages = []
  @results = []
end

Instance Attribute Details

#messagesObject (readonly)

Returns the value of attribute messages.



23
24
25
# File 'lib/inquirex/actions/outbox.rb', line 23

def messages
  @messages
end

#resultsObject (readonly)

Returns the value of attribute results.



23
24
25
# File 'lib/inquirex/actions/outbox.rb', line 23

def results
  @results
end

Instance Method Details

#add_message(mail) ⇒ Mail::Message

Parameters:

  • mail (Mail::Message)

Returns:

  • (Mail::Message)


32
33
34
35
# File 'lib/inquirex/actions/outbox.rb', line 32

def add_message(mail)
  @messages << mail
  mail
end

#eachObject

Iterates over built Mail::Message objects.



45
# File 'lib/inquirex/actions/outbox.rb', line 45

def each(&) = @messages.each(&)

#empty?Boolean

Returns:

  • (Boolean)


51
# File 'lib/inquirex/actions/outbox.rb', line 51

def empty? = @messages.empty?

#failuresArray<Result>

Returns executions that raised.

Returns:

  • (Array<Result>)

    executions that raised



54
# File 'lib/inquirex/actions/outbox.rb', line 54

def failures = @results.select { |result| result.status == :failed }

#record(action_id, status, error: nil) ⇒ Object

Parameters:

  • action_id (Symbol)
  • status (Symbol)

    :ok, :skipped, or :failed

  • error (StandardError, nil) (defaults to: nil)


40
41
42
# File 'lib/inquirex/actions/outbox.rb', line 40

def record(action_id, status, error: nil)
  @results << Result.new(action_id:, status:, error:)
end

#sizeInteger

Returns number of built messages.

Returns:

  • (Integer)

    number of built messages



48
# File 'lib/inquirex/actions/outbox.rb', line 48

def size = @messages.size