对于一般知识和娱乐目的,我试图给Rails添加一些行为。我正在寻找的只是在Rails运行的每条选择语句之前运行Mysql“EXPLAIN”语句。我认为这应该可以,但我得到的错误:添加到ActiveRecord :: ConnectionAdapters :: MysqlAdapter
/usr/lib/ruby/gems/1.8/gems/activesupport-2.1.0/lib/active_support/core_ext/module/aliasing.rb:32: in alias_method': undefined method
select_with_explain'for class'ActiveRecord :: ConnectionAdapters :: MysqlAdapter'(NameError)
该类位于initializers dir中。这里是代码:
module Explanifier
def self.included(base)
base.class_eval do
extend ClassMethods
alias_method_chain :select, :explain
end
end
module ClassMethods
def select_with_explain(sql, name = nil)
puts "testing!!!"
execute('EXPLAIN ' + sql, name)
select_without_explain(sql, name)
end
end
end
class ActiveRecord::ConnectionAdapters::MysqlAdapter
include Explanifier
end
有人可以解释我在这里失踪?