Sha256: 947fb882faabd885caf43386509918ce42dcbae2f0aeae9765978796242676ed

Contents?: true

Size: 1.07 KB

Versions: 10

Compression:

Stored size: 1.07 KB

Contents

module ActiveRecord
  module SqlAnalyzer
    class Analyzer
      attr_reader :options

      def initialize
        @options = {}
      end

      def [](key)
        @options[key]
      end

      # Tables to watch for this analyzer
      def tables(names)
        unless names.is_a?(Array)
          raise ArgumentError, "Names of tables must be an array"
        end

        @options[:table_regex] = /\A\s*((SELECT|DELETE).*(FROM|JOIN)|(INSERT\s+INTO|UPDATE))\s+`?(#{names.join('|')})`?/i
      end

      # Logger class to use for recording data
      def logger(klass)
        @options[:logger] = klass
      end

      # How to tag the data
      def name(name)
        if !name.is_a?(String) && name !~ /\A([a-z0-9A-Z_]+)\z/
          raise ArgumentError, "Name for this analyzer can only contain [a-z0-9A-Z_] characters"
        end

        @options[:name] = name
      end

      def setup
        @options[:logger_instance] ||= (@options[:logger] || RedactedLogger).new(
          SqlAnalyzer.config[:logger_root_path],
          @options[:name]
        )
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
active_record-sql_analyzer-0.3.0 lib/active_record/sql_analyzer/analyzer.rb
active_record-sql_analyzer-0.2.3 lib/active_record/sql_analyzer/analyzer.rb
active_record-sql_analyzer-0.2.2 lib/active_record/sql_analyzer/analyzer.rb
active_record-sql_analyzer-0.2.1 lib/active_record/sql_analyzer/analyzer.rb
active_record-sql_analyzer-0.2.0 lib/active_record/sql_analyzer/analyzer.rb
active_record-sql_analyzer-0.1.0 lib/active_record/sql_analyzer/analyzer.rb
active_record-sql_analyzer-0.0.8 lib/active_record/sql_analyzer/analyzer.rb
active_record-sql_analyzer-0.0.7 lib/active_record/sql_analyzer/analyzer.rb
active_record-sql_analyzer-0.0.6 lib/active_record/sql_analyzer/analyzer.rb
active_record-sql_analyzer-0.0.5 lib/active_record/sql_analyzer/analyzer.rb