class QboRails
Constants
- VERSION
Attributes
base[R]
error[RW]
only_run_once[RW]
result[R]
Public Class Methods
new(account, type = nil)
click to toggle source
# File lib/qbo_rails.rb, line 17 def initialize(account, type = nil) @base = Quickbooks::Base.new(account, type) end
Public Instance Methods
create(qb_record)
click to toggle source
# File lib/qbo_rails.rb, line 21 def create(qb_record) with_rescued_exception do @qb_record = qb_record @result = @base.service.create(@qb_record) @result end end
create_or_update(record, qb_record)
click to toggle source
# File lib/qbo_rails.rb, line 29 def create_or_update(record, qb_record) with_rescued_exception do @record = record @qb_record = qb_record if id = @record.send(foreign_key) prepare_update(id, qb_record) @result = @base.service.update(qb_record) else @result = @base.service.create(@qb_record) set_qbo_id end end end
delete(record_or_qbo_id)
click to toggle source
# File lib/qbo_rails.rb, line 43 def delete(record_or_qbo_id) with_rescued_exception do id = record_or_qbo_id.try(foreign_key) || record_or_qbo_id @qb_record = @base.find_by_id(id) @result = @base.service.delete(@qb_record) end end
Protected Instance Methods
prepare_update(id, qb_record)
click to toggle source
# File lib/qbo_rails.rb, line 95 def prepare_update(id, qb_record) result = @base.find_by_id(id) qb_record.id = result.id qb_record.sync_token = result.sync_token qb_record end
qbo_error_params(exception)
click to toggle source
# File lib/qbo_rails.rb, line 73 def qbo_error_params(exception) @error = { message: exception.message[0..250], body: "#{exception}\n\n#{exception.message}\n\n#{exception.backtrace.take(10)}", resource_type: @record.try(:class).try(:name), resource_id: @record.try(:id), request_xml: request_xml(exception) } end
record_error(exception)
click to toggle source
# File lib/qbo_rails.rb, line 83 def record_error(exception) QboError.create!(qbo_error_params(exception)) end
request_xml(exception)
click to toggle source
# File lib/qbo_rails.rb, line 87 def request_xml(exception) if exception.respond_to?(:request_xml) exception.request_xml elsif defined?(@qb_record) @qb_record.to_xml.to_s end end
run_error_handlers(e)
click to toggle source
# File lib/qbo_rails.rb, line 65 def run_error_handlers(e) methods.detect do |method| if method =~ /^handle_error_/ send(method, e) end end end
set_qbo_id()
click to toggle source
# File lib/qbo_rails.rb, line 102 def set_qbo_id @record.update(self.foreign_key => @result.id) @record end
with_rescued_exception() { || ... }
click to toggle source
# File lib/qbo_rails.rb, line 53 def with_rescued_exception yield rescue => e if @only_run_once rescue_with_handler(e) || raise else unless run_error_handlers(e) rescue_with_handler(e) || raise end end end