class Itsf::Services::V2::Service::Base
Attributes
_messages[R]
instrumenter[RW]
response[R]
Public Class Methods
call(attributes = {}, *args)
click to toggle source
# File lib/itsf/services/v2/service/base.rb, line 23 def self.call(attributes = {}, *args) new(attributes, *args).send(:do_work) end
i18n_scope()
click to toggle source
# File lib/itsf/services/v2/service/base.rb, line 19 def self.i18n_scope 'activerecord' end
new(attributes = {}, *args)
click to toggle source
# File lib/itsf/services/v2/service/base.rb, line 27 def initialize(attributes = {}, *args) options = args.extract_options! options.reverse_merge!(instrumenter: ActiveSupport::Notifications) @_messages = [] @errors = ActiveModel::Errors.new(self) initialize_instrumenter(options[:instrumenter]) instrument('initialize.base.service.v2.services.itsf') do initialize_attributes if respond_to?(:initialize_attributes, true) send_attributes(attributes) initialize_response end end
Public Instance Methods
persisted?()
click to toggle source
# File lib/itsf/services/v2/service/base.rb, line 12 def persisted?; false end
Private Instance Methods
add_error_and_say(attribute, message, options = {})
click to toggle source
# File lib/itsf/services/v2/service/base.rb, line 98 def add_error_and_say(attribute, message, options = {}) errors.add(attribute, message) say(message, options) end
error(message, options = {})
click to toggle source
# File lib/itsf/services/v2/service/base.rb, line 92 def error(message, options = {}) options.reverse_merge!(level: :error, attribute: :base) errors.add(options[:attribute], message) say(message, options) end
info(message, options = {})
click to toggle source
# File lib/itsf/services/v2/service/base.rb, line 82 def info(message, options = {}) options.reverse_merge!(level: :info) say(message, options) end
initialize_instrumenter(instrumenter)
click to toggle source
# File lib/itsf/services/v2/service/base.rb, line 50 def initialize_instrumenter(instrumenter) @instrumenter = instrumenter end
initialize_response()
click to toggle source
# File lib/itsf/services/v2/service/base.rb, line 54 def initialize_response if self.class.const_defined?('Response') @response = "#{self.class}::Response".constantize.new else @response = Services::V2::Response::Base.new end end
respond()
click to toggle source
# File lib/itsf/services/v2/service/base.rb, line 62 def respond response end
say(message, options = {})
click to toggle source
# File lib/itsf/services/v2/service/base.rb, line 72 def say(message, options = {}) options.reverse_merge!(indent: 0, level: :info) indent = options.delete(:indent) level = options.delete(:level) formatted_message = "[#{self.class.name}]: #{' ' * indent}#{message}" puts formatted_message unless Itsf::Services.silenced_levels[Rails.env].try(:include?, level) @_messages << Services::V2::Message::Base.new(service_class: self.class, message: message, level: level, indent: indent) true end
send_attributes(attributes)
click to toggle source
# File lib/itsf/services/v2/service/base.rb, line 44 def send_attributes(attributes) attributes.each do |name, value| send("#{name}=", value) end end
set_errors_on_response()
click to toggle source
# File lib/itsf/services/v2/service/base.rb, line 103 def set_errors_on_response @response.send(:'errors=', @errors) end
set_messages_on_response()
click to toggle source
# File lib/itsf/services/v2/service/base.rb, line 107 def set_messages_on_response @response.send(:'messages=', @_messages) end
warn(message, options = {})
click to toggle source
# File lib/itsf/services/v2/service/base.rb, line 87 def warn(message, options = {}) options.reverse_merge!(level: :warning) say(message, options) end