module ActiveRecord::PLSQL::ProcedureMethods

Private Instance Methods

call_procedure(procedure, options = {}) { |self, result| ... } click to toggle source
# File lib/active_record/plsql/procedure_methods.rb, line 130
def call_procedure(procedure, options = {})
  result = procedure.exec(*get_procedure_arguments(procedure, options))
  if block_given?
    yield(self, result)
  else
    result
  end
end
call_procedure_method(method, arguments = {}, opts = {}) click to toggle source
# File lib/active_record/plsql/procedure_methods.rb, line 114
def call_procedure_method(method, arguments = {}, opts = {})
  procedure, options, block = procedure_methods[method].values_at(:procedure, :options, :block)
  options = options.merge(opts)

  if options[:arguments]
    if arguments.is_a?(Hash)
      arguments = arguments.merge(instance_exec(&options[:arguments]))
    else
      arguments += options[:arguments]
    end
  end

  options[:arguments] = arguments
  call_procedure(procedure, options, &block)
end
get_procedure_arguments(procedure, options) click to toggle source
# File lib/active_record/plsql/procedure_methods.rb, line 139
def get_procedure_arguments(procedure, options)
  arguments = options[:arguments]
  arguments = arguments.dup if arguments.duplicable?

  if Hash === arguments
    arguments.symbolize_keys!
    arguments_metadata = procedures_arguments[procedure]
    # throw away unnecessary arguments
    [arguments.select {|k,_| arguments_metadata[k]}]
  else
    arguments
  end
end