module QueryReviewer

Constants

CONFIGURATION

Public Class Methods

enabled?() click to toggle source
# File lib/query_reviewer.rb, line 49
def self.enabled?
  CONFIGURATION["enabled"]
end
inject_reviewer() click to toggle source
# File lib/query_reviewer/rails.rb, line 4
def self.inject_reviewer
  # Load adapters
  ActiveRecord::Base
  adapter_class = ActiveRecord::ConnectionAdapters::MysqlAdapter  if defined? ActiveRecord::ConnectionAdapters::MysqlAdapter
  adapter_class = ActiveRecord::ConnectionAdapters::Mysql2Adapter if defined? ActiveRecord::ConnectionAdapters::Mysql2Adapter
  adapter_class.send(:include, QueryReviewer::MysqlAdapterExtensions) if adapter_class
  # Load into controllers
  ActionController::Base.send(:include, QueryReviewer::ControllerExtensions)
  Array.send(:include, QueryReviewer::ArrayExtensions)
  if ActionController::Base.respond_to?(:append_view_path)
    ActionController::Base.append_view_path(File.dirname(__FILE__) + "/lib/query_reviewer/views")
  end
end
load_configuration() click to toggle source
# File lib/query_reviewer.rb, line 9
def self.load_configuration
  default_config = YAML::load(ERB.new(IO.read(File.join(File.dirname(__FILE__), "..", "query_reviewer_defaults.yml"))).result)

  CONFIGURATION.merge!(default_config["all"] || {})
  CONFIGURATION.merge!(default_config[Rails.env || "test"] || {})

  app_config_file = File.join(Rails.root, 'config/query_reviewer.yml')

  if File.file?(app_config_file)
    app_config = YAML.load(ERB.new(IO.read(app_config_file)).result)
    CONFIGURATION.merge!(app_config["all"] || {})
    CONFIGURATION.merge!(app_config[Rails.env || "test"] || {})
  end

  if enabled?
    begin
      CONFIGURATION["uv"] ||= if Gem::Specification.respond_to?(:find_all_by_name)
        !Gem::Specification.find_all_by_name('uv').empty?
      else # RubyGems < 1.8.0
        !Gem.searcher.find("uv").nil?
      end

      if CONFIGURATION["uv"]
        require "uv"
      end
    rescue
      CONFIGURATION["uv"] ||= false
    end

    require "query_reviewer/query_warning"
    require "query_reviewer/array_extensions"
    require "query_reviewer/sql_query"
    require "query_reviewer/mysql_analyzer"
    require "query_reviewer/sql_sub_query"
    require "query_reviewer/mysql_adapter_extensions"
    require "query_reviewer/controller_extensions"
    require "query_reviewer/sql_query_collection"
  end
end
safe_log() { || ... } click to toggle source
# File lib/query_reviewer.rb, line 53
def self.safe_log(&block)
  if @logger.nil?
    yield
  elsif @logger.respond_to?(:quietly)
    @logger.quietly { yield }
  elsif @logger.respond_to?(:silence)
    @logger.silence { yield }
  end
end