class N1Finder::Adapters::BaseAdapter

Adds common functionality to other adapters

Constants

MAIN_METHOD_ALIAS

An alias that we create for MAIN_METHOD function

Attributes

storage[R]

@!attribute [r] storage

Storage that stores queries

Public Class Methods

new(storage) click to toggle source
# File lib/n_1_finder/adapters/base_adapter.rb, line 12
def initialize(storage)
  @storage = storage
end

Public Instance Methods

exec() { || ... } click to toggle source

Replaces original query execution function (defined in MAIN_METHOD) with our function that collects all queries and calls original function. After passed block yileds, replaces our function with origianal and removes our function.

@yield passed block

@return passed block execution result

# File lib/n_1_finder/adapters/base_adapter.rb, line 24
def exec
  set_trap
  yield
ensure
  remove_trap
end

Private Instance Methods

remove_trap() click to toggle source
# File lib/n_1_finder/adapters/base_adapter.rb, line 33
def remove_trap
  main_query_method = self.class::MAIN_METHOD
  main_method_alias = MAIN_METHOD_ALIAS

  database_class.class_eval do
    remove_method(main_query_method)
    alias_method main_query_method, main_method_alias
    remove_method(main_method_alias)
  end
end