Module: PoolLint

Defined in:
lib/poollint.rb,
lib/poollint/hooks.rb,
lib/poollint/errors.rb,
lib/poollint/report.rb,
lib/poollint/railtie.rb,
lib/poollint/version.rb,
lib/poollint/notifier.rb,
lib/poollint/inspectors.rb,
lib/poollint/sql_watcher.rb,
lib/poollint/configuration.rb,
lib/poollint/suspicion_log.rb,
lib/poollint/execution_state.rb,
lib/poollint/hooks/lifecycle.rb,
lib/poollint/allowed_settings.rb,
lib/poollint/connection_state.rb,
lib/poollint/inspectors/mysql.rb,
lib/poollint/inspection_runner.rb,
lib/poollint/hooks/checkin_hook.rb,
lib/poollint/hooks/checkout_hook.rb,
lib/poollint/inspectors/postgresql.rb,
lib/poollint/kannuki_lock_resolver.rb,
lib/poollint/inspectors/postgresql_capture.rb

Defined Under Namespace

Modules: ExecutionState, Hooks, Inspectors, KannukiLockResolver Classes: AdvisoryLock, AllowedSettings, Configuration, ConnectionState, Error, InspectionRunner, InspectionTimeout, LeakedSessionState, Notifier, Railtie, Report, SettingChange, SqlWatcher, Suspicion, SuspicionLog, UserLevelLock

Constant Summary collapse

LeakDetected =
LeakedSessionState
VERSION =
"0.1.0"
DEFAULT_PG_SETTINGS =
%w[
  role
  session_authorization
  search_path
  statement_timeout
  lock_timeout
  idle_in_transaction_session_timeout
  default_transaction_read_only
].freeze
DEFAULT_MYSQL_SETTINGS =
%w[
  sql_mode
  time_zone
  transaction_isolation
  transaction_read_only
  lock_wait_timeout
  max_execution_time
].freeze

Class Method Summary collapse

Class Method Details

.configurationObject



26
27
28
# File 'lib/poollint.rb', line 26

def configuration
  @configuration ||= Configuration.new
end

.configure {|configuration| ... } ⇒ Object

Yields:



30
31
32
33
# File 'lib/poollint.rb', line 30

def configure
  yield configuration
  configuration.validate!
end

.connection_state(connection) ⇒ Object



35
36
37
38
39
40
# File 'lib/poollint.rb', line 35

def connection_state(connection)
  ConnectionState.fetch(
    connection,
    suspicion_limit: configuration.suspicion_limit
  )
end

.install!Object



42
43
44
45
46
47
48
# File 'lib/poollint.rb', line 42

def install!
  require "active_record"

  SqlWatcher.install!
  Hooks.install!
  warn_about_checkin_in_production
end

.log_warning(message) ⇒ Object



50
51
52
53
54
55
56
57
58
59
# File 'lib/poollint.rb', line 50

def log_warning(message)
  logger = configuration.logger
  logger ||= ActiveRecord::Base.logger if defined?(ActiveRecord::Base)
  formatted = "[PoolLint] #{message}"
  return warn_with_logger(logger, formatted) if logger

  Kernel.warn(formatted)
rescue StandardError
  nil
end

.reset_configuration!(environment: nil) ⇒ Object



61
62
63
# File 'lib/poollint.rb', line 61

def reset_configuration!(environment: nil)
  @configuration = Configuration.new(environment: environment)
end

.suppressObject



65
66
67
# File 'lib/poollint.rb', line 65

def suppress(&)
  ExecutionState.suppress(&)
end