Module: QueryReviewer

Defined in:
lib/query_reviewer.rb,
lib/query_reviewer/rails.rb,
lib/query_reviewer/rails.rb,
lib/query_reviewer/sql_query.rb,
lib/query_reviewer/query_warning.rb,
lib/query_reviewer/sql_sub_query.rb,
lib/query_reviewer/mysql_analyzer.rb,
lib/query_reviewer/array_extensions.rb,
lib/query_reviewer/sql_query_collection.rb,
lib/query_reviewer/controller_extensions.rb,
lib/query_reviewer/mysql_adapter_extensions.rb,
lib/query_reviewer/views/query_review_box_helper.rb

Defined Under Namespace

Modules: ArrayExtensions, ControllerExtensions, MysqlAdapterExtensions, MysqlAnalyzer, Views Classes: QueryWarning, Railtie, SqlQuery, SqlQueryCollection, SqlSubQuery

Constant Summary collapse

CONFIGURATION =
{}

Class Method Summary collapse

Class Method Details

.enabled?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/query_reviewer.rb', line 49

def self.enabled?
  CONFIGURATION["enabled"]
end

.inject_reviewerObject



4
5
6
7
8
9
10
11
12
13
14
15
16
# 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_configurationObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 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(&block) ⇒ Object



53
54
55
56
57
58
59
60
61
# 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