module ServiceObjecter

Constants

VERSION

Public Class Methods

included(klass) click to toggle source
# File lib/service_objecter.rb, line 5
def self.included(klass)
  klass.extend(ClassMethods)
  klass.include(ServiceObjecter::ChainitIntegration) if defined?(ChainIt)
end

Public Instance Methods

call() click to toggle source
# File lib/service_objecter.rb, line 16
def call
  raise NotImplementedError
end

Private Instance Methods

crashed(error, value = nil) click to toggle source
# File lib/service_objecter.rb, line 30
def crashed(error, value = nil)
  log(error)
  failed value || error
end
failed(value = nil) click to toggle source
# File lib/service_objecter.rb, line 26
def failed(value = nil)
  result.push(false, value)
end
log(data) click to toggle source
# File lib/service_objecter.rb, line 35
def log(data)
  return unless defined?(Rails)
  Rails.logger.error data
end
result() click to toggle source
# File lib/service_objecter.rb, line 40
def result
  @result ||= Result.new(true)
end
success(value = nil) click to toggle source
# File lib/service_objecter.rb, line 22
def success(value = nil)
  result.push(true, value)
end
with_transaction() { || ... } click to toggle source

Transactions helper Simple usage

def call

with_transaction do
  ChainIt.new.chain { failed }.result
end

end

def call

with_transaction do
  failed
end

end

# File lib/service_objecter.rb, line 63
def with_transaction
  return yield unless defined?(ActiveRecord)
  result = nil
  ActiveRecord::Base.transaction(requires_new: true) do
    result = yield
    raise ActiveRecord::Rollback if result.failure?
  end
  result
end