Class: DashOverlord::UseCases::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/dash_overlord/use_cases/base.rb

Constant Summary collapse

AbortError =
Class.new(StandardError)

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(context = nil, attributes = nil) ⇒ Base

Returns a new instance of Base.



41
42
43
44
45
46
47
# File 'lib/dash_overlord/use_cases/base.rb', line 41

def initialize(context = nil, attributes = nil)
  @context = context if context.is_a?(Context)

  @context ||= Context.new(context || {})

  @context.assign_attributes(attributes || {})
end

Instance Attribute Details

#contextObject (readonly)

Returns the value of attribute context.



49
50
51
# File 'lib/dash_overlord/use_cases/base.rb', line 49

def context
  @context
end

Class Method Details

.context_reader(*methods) ⇒ Object



24
25
26
# File 'lib/dash_overlord/use_cases/base.rb', line 24

def self.context_reader(*methods)
  methods.each { |method| define_method(method) { context.send(method) } }
end

.perform(context = nil, attributes = nil) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/dash_overlord/use_cases/base.rb', line 10

def self.perform(context = nil, attributes = nil)
  instance = self.new(context, attributes)

  begin
    instance.perform
  rescue AbortError
    nil
  end

  instance.final

  instance.context
end

.target(name, options = {}) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/dash_overlord/use_cases/base.rb', line 28

def self.target(name, options = {})
  # Gem that allows you to run ActiveRecord validations against a model
  self.include ObjectAttorney

  defend(name, options)

  if defendant_options[:in].present?
    context_reader defendant_options[:in]
  else
    context_reader name
  end
end

Instance Method Details

#finalObject



53
# File 'lib/dash_overlord/use_cases/base.rb', line 53

def final; end

#performObject



51
# File 'lib/dash_overlord/use_cases/base.rb', line 51

def perform; end

#target_valid?Boolean

Returns:

  • (Boolean)


55
56
57
# File 'lib/dash_overlord/use_cases/base.rb', line 55

def target_valid?
  respond_to?(:valid?) ? valid? : false
end