Class: ActiveRecord::SimpleExplain

Inherits:
Object
  • Object
show all
Defined in:
lib/active_record/simple_explain.rb,
lib/active_record/simple_explain/version.rb,
lib/active_record/simple_explain/connection_adapters/mysql_adapter.rb,
lib/active_record/simple_explain/connection_adapters/sqlite3_adapter.rb,
lib/active_record/simple_explain/connection_adapters/adapter_interface.rb,
lib/active_record/simple_explain/connection_adapters/postgresql_adapter.rb

Defined Under Namespace

Modules: AdapterInterface, MysqlAdapter, PostgreSQLAdapter, SQLite3Adapter

Constant Summary collapse

VERSION =
"0.0.2"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(adapter, sql) ⇒ SimpleExplain

param

String adapter



8
9
10
11
12
13
14
15
16
17
# File 'lib/active_record/simple_explain.rb', line 8

def initialize(adapter, sql)
  #
  # {class => filename}
  #
  @adapters = {}
  init_adapters

  @sql      = sql
  load_adapter(adapter)
end

Instance Attribute Details

#sqlObject (readonly)

Returns the value of attribute sql.



18
19
20
# File 'lib/active_record/simple_explain.rb', line 18

def sql
  @sql
end

Instance Method Details

#add_adapter(klass, filename) ⇒ Object



27
28
29
# File 'lib/active_record/simple_explain.rb', line 27

def add_adapter(klass, filename)
  @adapters[klass] = filename
end

#displayObject



46
47
48
# File 'lib/active_record/simple_explain.rb', line 46

def display
  puts format(result)
end

#filename(adapter) ⇒ Object



38
39
40
41
42
43
44
# File 'lib/active_record/simple_explain.rb', line 38

def filename(adapter)
  if @adapters.has_key? adapter
    @adapters[adapter]
  else
    adapter.underscore
  end
end

#init_adaptersObject



20
21
22
23
24
25
# File 'lib/active_record/simple_explain.rb', line 20

def init_adapters
  %w(SQLite3Adapter sqlite3_adapter
     PostgreSQLAdapter postgresql_adapter).each_cons(2) { |k, v|
    add_adapter(k, v)
  }
end

#load_adapter(adapter) ⇒ Object



31
32
33
34
35
36
# File 'lib/active_record/simple_explain.rb', line 31

def load_adapter(adapter)
  require "active_record/simple_explain/connection_adapters/#{filename(adapter)}"
  self.class_eval {
    include ActiveRecord::SimpleExplain.const_get(adapter)
  }
end

#resultObject

return

Object ( Adapter::Result or Array )



53
54
55
# File 'lib/active_record/simple_explain.rb', line 53

def result
  ActiveRecord::Base.connection.execute("#{statement} #{sql}")
end