Skip to content

Latest commit

 

History

History
4414 lines (3741 loc) · 127 KB

File metadata and controls

4414 lines (3741 loc) · 127 KB

Generated by trace_location at 2019-06-08 01:37:49 +0900

vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/instrumentation.rb:43
ActionController::Instrumentation#render
def render(*args)
  render_output = nil
  self.view_runtime = cleanup_view_runtime do
    Benchmark.ms { render_output = super }
  end
  render_output
end
# called from app/controllers/books_controller.rb:9
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/railties/controller_runtime.rb:27
ActiveRecord::Railties::ControllerRuntime#cleanup_view_runtime
def cleanup_view_runtime
  if logger && logger.info? && ActiveRecord::Base.connected?
    db_rt_before_render = ActiveRecord::LogSubscriber.reset_runtime
    self.db_runtime = (db_runtime || 0) + db_rt_before_render
    runtime = super
    db_rt_after_render = ActiveRecord::LogSubscriber.reset_runtime
    self.db_runtime += db_rt_after_render
    runtime - db_rt_after_render
  else
    super
  end
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/instrumentation.rb:45
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:122
ActiveRecord::ConnectionHandling.connected?
def connected?
  connection_handler.connected?(connection_specification_name)
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/railties/controller_runtime.rb:28
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/core.rb:130
ActiveRecord::Base.connection_handler
def self.connection_handler
  ActiveRecord::RuntimeRegistry.connection_handler || default_connection_handler
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:123
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/runtime_registry.rb:20
ActiveRecord::RuntimeRegistry.connection_handler
class_eval %{ def self.#{val}; instance.#{val}; end }, __FILE__, __LINE__
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/core.rb:131
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:96
ActiveRecord::ConnectionHandling.connection_specification_name
def connection_specification_name
  if !defined?(@connection_specification_name) || @connection_specification_name.nil?
    return self == Base ? "primary" : superclass.connection_specification_name
  end
  @connection_specification_name
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:123
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1019
ActiveRecord::ConnectionAdapters::ConnectionHandler#connected?
def connected?(spec_name)
  conn = retrieve_connection_pool(spec_name)
  conn && conn.connected?
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:123
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1039
ActiveRecord::ConnectionAdapters::ConnectionHandler#retrieve_connection_pool
def retrieve_connection_pool(spec_name)
  owner_to_pool.fetch(spec_name) do
    # Check if a connection was previously established in an ancestor process,
    # which may have been forked.
    if ancestor_pool = pool_from_any_process_for(spec_name)
      # A connection was established in an ancestor process that must have
      # subsequently forked. We can't reuse the connection, but we can copy
      # the specification and establish a new connection with it.
      establish_connection(ancestor_pool.spec.to_hash).tap do |pool|
        pool.schema_cache = ancestor_pool.schema_cache if ancestor_pool.schema_cache
      end
    else
      owner_to_pool[spec_name] = nil
    end
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1020
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1058
ActiveRecord::ConnectionAdapters::ConnectionHandler#owner_to_pool
def owner_to_pool
  @owner_to_pool[Process.pid]
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1040
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:422
ActiveRecord::ConnectionAdapters::ConnectionPool#connected?
def connected?
  synchronize { @connections.any? }
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1021
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:15
ActiveRecord::LogSubscriber.reset_runtime
def self.reset_runtime
  rt, self.runtime = runtime, 0
  rt
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/railties/controller_runtime.rb:29
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:11
ActiveRecord::LogSubscriber.runtime
def self.runtime
  ActiveRecord::RuntimeRegistry.sql_runtime ||= 0
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:16
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/runtime_registry.rb:20
ActiveRecord::RuntimeRegistry.sql_runtime
class_eval %{ def self.#{val}; instance.#{val}; end }, __FILE__, __LINE__
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:12
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:7
ActiveRecord::LogSubscriber.runtime=
def self.runtime=(value)
  ActiveRecord::RuntimeRegistry.sql_runtime = value
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:16
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/runtime_registry.rb:21
ActiveRecord::RuntimeRegistry.sql_runtime=
class_eval %{ def self.#{val}=(x); instance.#{val}=x; end }, __FILE__, __LINE__
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:8
vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/instrumentation.rb:86
ActiveRecord::Railties::ControllerRuntime#cleanup_view_runtime
def cleanup_view_runtime
  if logger && logger.info? && ActiveRecord::Base.connected?
    db_rt_before_render = ActiveRecord::LogSubscriber.reset_runtime
    self.db_runtime = (db_runtime || 0) + db_rt_before_render
    runtime = super
    db_rt_after_render = ActiveRecord::LogSubscriber.reset_runtime
    self.db_runtime += db_rt_after_render
    runtime - db_rt_after_render
  else
    super
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/railties/controller_runtime.rb:31
vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/rendering.rb:34
ActionController::Instrumentation#render
def render(*args)
  render_output = nil
  self.view_runtime = cleanup_view_runtime do
    Benchmark.ms { render_output = super }
  end
  render_output
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/instrumentation.rb:46
vendor/bundle/gems/actionpack-5.2.3/lib/abstract_controller/rendering.rb:23
ActionController::Instrumentation#render
def render(*args)
  render_output = nil
  self.view_runtime = cleanup_view_runtime do
    Benchmark.ms { render_output = super }
  end
  render_output
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/rendering.rb:36
vendor/bundle/gems/actionpack-5.2.3/lib/abstract_controller/rendering.rb:116
AbstractController::Rendering#_normalize_render
def _normalize_render(*args, &block) # :nodoc:
  options = _normalize_args(*args, &block)
  _process_variant(options)
  _normalize_options(options)
  options
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/abstract_controller/rendering.rb:24
vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/rendering.rb:82
ActionController::Rendering#_normalize_args
def _normalize_args(action = nil, options = {}, &blk)
  options = super
  options[:update] = blk if block_given?
  options
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/abstract_controller/rendering.rb:117
vendor/bundle/gems/actionpack-5.2.3/lib/abstract_controller/rendering.rb:78
ActionController::Rendering#_normalize_args
def _normalize_args(action = nil, options = {}, &blk)
  options = super
  options[:update] = blk if block_given?
  options
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/rendering.rb:83
vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/rendering.rb:57
ActionController::Rendering#_process_variant
def _process_variant(options)
  if defined?(request) && !request.nil? && request.variant.present?
    options[:variant] = request.variant
  end
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/abstract_controller/rendering.rb:118
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/mime_negotiation.rb:100
ActionDispatch::Http::MimeNegotiation#variant
def variant
  @variant ||= ActiveSupport::ArrayInquirer.new
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/rendering.rb:58
vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/rendering.rb:89
ActionController::Rendering#_normalize_options
def _normalize_options(options)
  _normalize_text(options)

  if options[:html]
    options[:html] = ERB::Util.html_escape(options[:html])
  end

  if options[:status]
    options[:status] = Rack::Utils.status_code(options[:status])
  end

  super
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/abstract_controller/rendering.rb:119
vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/rendering.rb:103
ActionController::Rendering#_normalize_text
def _normalize_text(options)
  RENDER_FORMATS_IN_PRIORITY.each do |format|
    if options.key?(format) && options[format].respond_to?(:to_text)
      options[format] = options[format].to_text
    end
  end
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/rendering.rb:90
vendor/bundle/gems/actionpack-5.2.3/lib/abstract_controller/rendering.rb:93
ActionController::Rendering#_normalize_options
def _normalize_options(options)
  _normalize_text(options)

  if options[:html]
    options[:html] = ERB::Util.html_escape(options[:html])
  end

  if options[:status]
    options[:status] = Rack::Utils.status_code(options[:status])
  end

  super
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/rendering.rb:100
vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/renderers.rb:141
ActionController::Renderers#render_to_body
def render_to_body(options)
  _render_to_body_with_renderer(options) || super
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/abstract_controller/rendering.rb:25
vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/renderers.rb:145
ActionController::Renderers#_render_to_body_with_renderer
def _render_to_body_with_renderer(options)
  _renderers.each do |name|
    if options.key?(name)
      _process_options(options)
      method_name = Renderers._render_with_renderer_method_name(name)
      return send(method_name, options.delete(name), options)
    end
  end
  nil
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/renderers.rb:142
vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/rendering.rb:112
ActionController::Rendering#_process_options
def _process_options(options)
  status, content_type, location = options.values_at(:status, :content_type, :location)

  self.status = status if status
  self.content_type = content_type if content_type
  headers["Location"] = url_for(location) if location

  super
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/renderers.rb:148
vendor/bundle/gems/actionpack-5.2.3/lib/abstract_controller/rendering.rb:98
ActionController::Rendering#_process_options
def _process_options(options)
  status, content_type, location = options.values_at(:status, :content_type, :location)

  self.status = status if status
  self.content_type = content_type if content_type
  headers["Location"] = url_for(location) if location

  super
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/rendering.rb:119
vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/renderers.rb:91
ActionController::Renderers._render_with_renderer_method_name
def self._render_with_renderer_method_name(key)
  "_render_with_renderer_#{key}"
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/renderers.rb:149
vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/renderers.rb:156
ActionController::Renderers#_render_with_renderer_json
add :json do |json, options|
  json = json.to_json(options) unless json.kind_of?(String)

  if options[:callback].present?
    if content_type.nil? || content_type == Mime[:json]
      self.content_type = Mime[:js]
    end

    "/**/#{options[:callback]}(#{json})"
  else
    self.content_type ||= Mime[:json]
    json
  end
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/renderers.rb:150
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/delegation.rb:71
ActiveRecord::Delegation#as_json
delegate :to_xml, :encode_with, :length, :each, :uniq, :join,
         :[], :&, :|, :+, :-, :sample, :reverse, :rotate, :compact, :in_groups, :in_groups_of,
         :to_sentence, :to_formatted_s, :as_json,
         :shuffle, :split, :slice, :index, :rindex, to: :records
# called from vendor/bundle/gems/activesupport-5.2.3/lib/active_support/json/encoding.rb:35
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:199
ActiveRecord::Relation#records
def records # :nodoc:
  load
  @records
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/delegation.rb:71
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:421
ActiveRecord::Relation#load
def load(&block)
  exec_queries(&block) unless loaded?

  self
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:200
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:546
ActiveRecord::Relation#exec_queries
def exec_queries(&block)
  skip_query_cache_if_necessary do
    @records =
      if eager_loading?
        apply_join_dependency do |relation, join_dependency|
          if ActiveRecord::NullRelation === relation
            []
          else
            relation = join_dependency.apply_column_aliases(relation)
            rows = connection.select_all(relation.arel, "SQL")
            join_dependency.instantiate(rows, &block)
          end.freeze
        end
      else
        klass.find_by_sql(arel, &block).freeze
      end

    preload = preload_values
    preload += includes_values unless eager_loading?
    preloader = nil
    preload.each do |associations|
      preloader ||= build_preloader
      preloader.preload @records, associations
    end

    @records.each(&:readonly!) if readonly_value

    @loaded = true
    @records
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:422
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:578
ActiveRecord::Relation#skip_query_cache_if_necessary
def skip_query_cache_if_necessary
  if skip_query_cache_value
    uncached do
      yield
    end
  else
    yield
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:547
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:69
ActiveRecord::QueryMethods#skip_query_cache_value
def #{method_name}                   # def includes_values
  get_value(#{name.inspect})         #   get_value(:includes)
end                                  # end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:579
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:907
ActiveRecord::QueryMethods#get_value
def get_value(name) # :nodoc:
  @values.fetch(name, DEFAULT_VALUES[name])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:70
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:472
ActiveRecord::Relation#eager_loading?
def eager_loading?
  @should_eager_load ||=
    eager_load_values.any? ||
    includes_values.any? && (joined_includes_values.any? || references_eager_loaded_tables?)
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:549
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:69
ActiveRecord::QueryMethods#eager_load_values
def #{method_name}                   # def includes_values
  get_value(#{name.inspect})         #   get_value(:includes)
end                                  # end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:474
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:907
ActiveRecord::QueryMethods#get_value
def get_value(name) # :nodoc:
  @values.fetch(name, DEFAULT_VALUES[name])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:70
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:69
ActiveRecord::QueryMethods#includes_values
def #{method_name}                   # def includes_values
  get_value(#{name.inspect})         #   get_value(:includes)
end                                  # end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:475
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:907
ActiveRecord::QueryMethods#get_value
def get_value(name) # :nodoc:
  @values.fetch(name, DEFAULT_VALUES[name])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:70
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:902
ActiveRecord::QueryMethods#arel
def arel(aliases = nil) # :nodoc:
  @arel ||= build_arel(aliases)
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:560
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:926
ActiveRecord::QueryMethods#build_arel
def build_arel(aliases)
  arel = Arel::SelectManager.new(table)

  aliases = build_joins(arel, joins_values.flatten, aliases) unless joins_values.empty?
  build_left_outer_joins(arel, left_outer_joins_values.flatten, aliases) unless left_outer_joins_values.empty?

  arel.where(where_clause.ast) unless where_clause.empty?
  arel.having(having_clause.ast) unless having_clause.empty?
  if limit_value
    limit_attribute = ActiveModel::Attribute.with_cast_value(
      "LIMIT".freeze,
      connection.sanitize_limit(limit_value),
      Type.default_value,
    )
    arel.take(Arel::Nodes::BindParam.new(limit_attribute))
  end
  if offset_value
    offset_attribute = ActiveModel::Attribute.with_cast_value(
      "OFFSET".freeze,
      offset_value.to_i,
      Type.default_value,
    )
    arel.skip(Arel::Nodes::BindParam.new(offset_attribute))
  end
  arel.group(*arel_columns(group_values.uniq.reject(&:blank?))) unless group_values.empty?

  build_order(arel)

  build_select(arel)

  arel.distinct(distinct_value)
  arel.from(build_from) unless from_clause.empty?
  arel.lock(lock_value) if lock_value

  arel
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:903
vendor/bundle/gems/arel-9.0.0/lib/arel/select_manager.rb:10
Arel::SelectManager#initialize
def initialize table = nil
  super()
  @ast   = Nodes::SelectStatement.new
  @ctx    = @ast.cores.last
  from table
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:927
vendor/bundle/gems/arel-9.0.0/lib/arel/tree_manager.rb:10
Arel::SelectManager#initialize
def initialize table = nil
  super()
  @ast   = Nodes::SelectStatement.new
  @ctx    = @ast.cores.last
  from table
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/select_manager.rb:11
vendor/bundle/gems/arel-9.0.0/lib/arel/nodes/select_core.rb:8
Arel::Nodes::SelectCore#initialize
def initialize
  super()
  @source         = JoinSource.new nil
  @top            = nil

  # http://savage.net.au/SQL/sql-92.bnf.html#set%20quantifier
  @set_quantifier = nil
  @projections    = []
  @wheres         = []
  @groups         = []
  @havings        = []
  @windows        = []
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/nodes/select_statement.rb:8
vendor/bundle/gems/arel-9.0.0/lib/arel/nodes/join_source.rb:10
Arel::Nodes::JoinSource#initialize
def initialize single_source, joinop = []
  super
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/nodes/select_core.rb:10
vendor/bundle/gems/arel-9.0.0/lib/arel/nodes/binary.rb:7
Arel::Nodes::JoinSource#initialize
def initialize single_source, joinop = []
  super
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/nodes/join_source.rb:11
vendor/bundle/gems/arel-9.0.0/lib/arel/nodes/select_statement.rb:8
Arel::Nodes::SelectStatement#initialize
def initialize cores = [SelectCore.new]
  super()
  @cores          = cores
  @orders         = []
  @limit          = nil
  @lock           = nil
  @offset         = nil
  @with           = nil
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/select_manager.rb:12
vendor/bundle/gems/arel-9.0.0/lib/arel/select_manager.rb:88
Arel::SelectManager#from
def from table
  table = Nodes::SqlLiteral.new(table) if String === table

  case table
  when Nodes::Join
    @ctx.source.right << table
  else
    @ctx.source.left = table
  end

  self
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/select_manager.rb:14
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:69
ActiveRecord::QueryMethods#joins_values
def #{method_name}                   # def includes_values
  get_value(#{name.inspect})         #   get_value(:includes)
end                                  # end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:929
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:907
ActiveRecord::QueryMethods#get_value
def get_value(name) # :nodoc:
  @values.fetch(name, DEFAULT_VALUES[name])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:70
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:69
ActiveRecord::QueryMethods#left_outer_joins_values
def #{method_name}                   # def includes_values
  get_value(#{name.inspect})         #   get_value(:includes)
end                                  # end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:930
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:907
ActiveRecord::QueryMethods#get_value
def get_value(name) # :nodoc:
  @values.fetch(name, DEFAULT_VALUES[name])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:70
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:69
ActiveRecord::QueryMethods#where_clause
def #{method_name}                   # def includes_values
  get_value(#{name.inspect})         #   get_value(:includes)
end                                  # end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:932
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:907
ActiveRecord::QueryMethods#get_value
def get_value(name) # :nodoc:
  @values.fetch(name, DEFAULT_VALUES[name])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:70
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/where_clause.rb:6
ActiveRecord::Relation::WhereClause#empty?
delegate :any?, :empty?, to: :predicates
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:932
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:69
ActiveRecord::QueryMethods#having_clause
def #{method_name}                   # def includes_values
  get_value(#{name.inspect})         #   get_value(:includes)
end                                  # end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:933
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:907
ActiveRecord::QueryMethods#get_value
def get_value(name) # :nodoc:
  @values.fetch(name, DEFAULT_VALUES[name])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:70
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/where_clause.rb:6
ActiveRecord::Relation::WhereClause#empty?
delegate :any?, :empty?, to: :predicates
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:933
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:69
ActiveRecord::QueryMethods#limit_value
def #{method_name}                   # def includes_values
  get_value(#{name.inspect})         #   get_value(:includes)
end                                  # end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:934
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:907
ActiveRecord::QueryMethods#get_value
def get_value(name) # :nodoc:
  @values.fetch(name, DEFAULT_VALUES[name])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:70
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:69
ActiveRecord::QueryMethods#offset_value
def #{method_name}                   # def includes_values
  get_value(#{name.inspect})         #   get_value(:includes)
end                                  # end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:942
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:907
ActiveRecord::QueryMethods#get_value
def get_value(name) # :nodoc:
  @values.fetch(name, DEFAULT_VALUES[name])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:70
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:69
ActiveRecord::QueryMethods#group_values
def #{method_name}                   # def includes_values
  get_value(#{name.inspect})         #   get_value(:includes)
end                                  # end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:950
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:907
ActiveRecord::QueryMethods#get_value
def get_value(name) # :nodoc:
  @values.fetch(name, DEFAULT_VALUES[name])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:70
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:1121
ActiveRecord::QueryMethods#build_order
def build_order(arel)
  orders = order_values.uniq
  orders.reject!(&:blank?)

  arel.order(*orders) unless orders.empty?
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:952
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:69
ActiveRecord::QueryMethods#order_values
def #{method_name}                   # def includes_values
  get_value(#{name.inspect})         #   get_value(:includes)
end                                  # end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:1122
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:907
ActiveRecord::QueryMethods#get_value
def get_value(name) # :nodoc:
  @values.fetch(name, DEFAULT_VALUES[name])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:70
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:1042
ActiveRecord::QueryMethods#build_select
def build_select(arel)
  if select_values.any?
    arel.project(*arel_columns(select_values.uniq))
  elsif klass.ignored_columns.any?
    arel.project(*klass.column_names.map { |field| arel_attribute(field) })
  else
    arel.project(table[Arel.star])
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:954
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:69
ActiveRecord::QueryMethods#select_values
def #{method_name}                   # def includes_values
  get_value(#{name.inspect})         #   get_value(:includes)
end                                  # end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:1043
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:907
ActiveRecord::QueryMethods#get_value
def get_value(name) # :nodoc:
  @values.fetch(name, DEFAULT_VALUES[name])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:70
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/model_schema.rb:264
ActiveRecord::ModelSchema::ClassMethods.ignored_columns
def ignored_columns
  if defined?(@ignored_columns)
    @ignored_columns
  else
    superclass.ignored_columns
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:1045
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/model_schema.rb:264
ActiveRecord::ModelSchema::ClassMethods.ignored_columns
def ignored_columns
  if defined?(@ignored_columns)
    @ignored_columns
  else
    superclass.ignored_columns
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/model_schema.rb:268
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/model_schema.rb:264
ActiveRecord::ModelSchema::ClassMethods.ignored_columns
def ignored_columns
  if defined?(@ignored_columns)
    @ignored_columns
  else
    superclass.ignored_columns
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/model_schema.rb:268
vendor/bundle/gems/arel-9.0.0/lib/arel.rb:33
Arel.star
def self.star
  sql '*'
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:1048
vendor/bundle/gems/arel-9.0.0/lib/arel.rb:29
Arel.sql
def self.sql raw_sql
  Arel::Nodes::SqlLiteral.new raw_sql
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel.rb:34
vendor/bundle/gems/arel-9.0.0/lib/arel/table.rb:80
Arel::Table#[]
def [] name
  ::Arel::Attribute.new self, name
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:1048
vendor/bundle/gems/arel-9.0.0/lib/arel/select_manager.rb:133
Arel::SelectManager#project
def project *projections
  # FIXME: converting these to SQLLiterals is probably not good, but
  # rails tests require it.
  @ctx.projections.concat projections.map { |x|
    STRING_OR_SYMBOL_CLASS.include?(x.class) ? Nodes::SqlLiteral.new(x.to_s) : x
  }
  self
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:1048
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:69
ActiveRecord::QueryMethods#distinct_value
def #{method_name}                   # def includes_values
  get_value(#{name.inspect})         #   get_value(:includes)
end                                  # end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:956
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:907
ActiveRecord::QueryMethods#get_value
def get_value(name) # :nodoc:
  @values.fetch(name, DEFAULT_VALUES[name])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:70
vendor/bundle/gems/arel-9.0.0/lib/arel/select_manager.rb:150
Arel::SelectManager#distinct
def distinct(value = true)
  if value
    @ctx.set_quantifier = Arel::Nodes::Distinct.new
  else
    @ctx.set_quantifier = nil
  end
  self
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:956
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:69
ActiveRecord::QueryMethods#from_clause
def #{method_name}                   # def includes_values
  get_value(#{name.inspect})         #   get_value(:includes)
end                                  # end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:957
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:907
ActiveRecord::QueryMethods#get_value
def get_value(name) # :nodoc:
  @values.fetch(name, DEFAULT_VALUES[name])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:70
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/from_clause.rb:17
ActiveRecord::Relation::FromClause#empty?
def empty?
  value.nil?
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:957
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:69
ActiveRecord::QueryMethods#lock_value
def #{method_name}                   # def includes_values
  get_value(#{name.inspect})         #   get_value(:includes)
end                                  # end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:958
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:907
ActiveRecord::QueryMethods#get_value
def get_value(name) # :nodoc:
  @values.fetch(name, DEFAULT_VALUES[name])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:70
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/querying.rb:40
ActiveRecord::Querying.find_by_sql
def find_by_sql(sql, binds = [], preparable: nil, &block)
  result_set = connection.select_all(sanitize_sql(sql), "#{name} Load", binds, preparable: preparable)
  column_types = result_set.column_types.dup
  attribute_types.each_key { |k| column_types.delete k }
  message_bus = ActiveSupport::Notifications.instrumenter

  payload = {
    record_count: result_set.length,
    class_name: name
  }

  message_bus.instrument("instantiation.active_record", payload) do
    result_set.map { |record| instantiate(record, column_types, &block) }
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:560
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:89
ActiveRecord::ConnectionHandling.connection
def connection
  retrieve_connection
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/querying.rb:41
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:117
ActiveRecord::ConnectionHandling.retrieve_connection
def retrieve_connection
  connection_handler.retrieve_connection(connection_specification_name)
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:90
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/core.rb:130
ActiveRecord::Base.connection_handler
def self.connection_handler
  ActiveRecord::RuntimeRegistry.connection_handler || default_connection_handler
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:118
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/runtime_registry.rb:20
ActiveRecord::RuntimeRegistry.connection_handler
class_eval %{ def self.#{val}; instance.#{val}; end }, __FILE__, __LINE__
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/core.rb:131
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:96
ActiveRecord::ConnectionHandling.connection_specification_name
def connection_specification_name
  if !defined?(@connection_specification_name) || @connection_specification_name.nil?
    return self == Base ? "primary" : superclass.connection_specification_name
  end
  @connection_specification_name
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:118
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:96
ActiveRecord::ConnectionHandling.connection_specification_name
def connection_specification_name
  if !defined?(@connection_specification_name) || @connection_specification_name.nil?
    return self == Base ? "primary" : superclass.connection_specification_name
  end
  @connection_specification_name
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:98
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:96
ActiveRecord::ConnectionHandling.connection_specification_name
def connection_specification_name
  if !defined?(@connection_specification_name) || @connection_specification_name.nil?
    return self == Base ? "primary" : superclass.connection_specification_name
  end
  @connection_specification_name
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:98
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1011
ActiveRecord::ConnectionAdapters::ConnectionHandler#retrieve_connection
def retrieve_connection(spec_name) #:nodoc:
  pool = retrieve_connection_pool(spec_name)
  raise ConnectionNotEstablished, "No connection pool with '#{spec_name}' found." unless pool
  pool.connection
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_handling.rb:118
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1039
ActiveRecord::ConnectionAdapters::ConnectionHandler#retrieve_connection_pool
def retrieve_connection_pool(spec_name)
  owner_to_pool.fetch(spec_name) do
    # Check if a connection was previously established in an ancestor process,
    # which may have been forked.
    if ancestor_pool = pool_from_any_process_for(spec_name)
      # A connection was established in an ancestor process that must have
      # subsequently forked. We can't reuse the connection, but we can copy
      # the specification and establish a new connection with it.
      establish_connection(ancestor_pool.spec.to_hash).tap do |pool|
        pool.schema_cache = ancestor_pool.schema_cache if ancestor_pool.schema_cache
      end
    else
      owner_to_pool[spec_name] = nil
    end
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1012
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1058
ActiveRecord::ConnectionAdapters::ConnectionHandler#owner_to_pool
def owner_to_pool
  @owner_to_pool[Process.pid]
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1040
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:381
ActiveRecord::ConnectionAdapters::ConnectionPool#connection
def connection
  @thread_cached_conns[connection_cache_key(@lock_thread || Thread.current)] ||= checkout
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:1014
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:667
ActiveRecord::ConnectionAdapters::ConnectionPool#connection_cache_key
def connection_cache_key(thread)
  thread
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:382
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/sanitization.rb:22
ActiveRecord::Sanitization::ClassMethods.sanitize_sql_for_conditions
def sanitize_sql_for_conditions(condition)
  return nil if condition.blank?

  case condition
  when Array; sanitize_sql_array(condition)
  else        condition
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/querying.rb:41
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/query_cache.rb:95
ActiveRecord::ConnectionAdapters::QueryCache#select_all
def select_all(arel, name = nil, binds = [], preparable: nil)
  if @query_cache_enabled && !locked?(arel)
    arel = arel_from_relation(arel)
    sql, binds = to_sql_and_binds(arel, binds)

    if preparable.nil?
      preparable = prepared_statements ? visitor.preparable : false
    end

    cache_sql(sql, name, binds) { super(sql, name, binds, preparable: preparable) }
  else
    super
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/querying.rb:41
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/query_cache.rb:135
ActiveRecord::ConnectionAdapters::QueryCache#locked?
def locked?(arel)
  arel = arel.arel if arel.is_a?(Relation)
  arel.respond_to?(:locked) && arel.locked
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/query_cache.rb:96
vendor/bundle/gems/arel-9.0.0/lib/arel/select_manager.rb:68
Arel::SelectManager#locked
def locked
  @ast.lock
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/query_cache.rb:137
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:498
ActiveRecord::ConnectionAdapters::DatabaseStatements#arel_from_relation
def arel_from_relation(relation)
  if relation.is_a?(Relation)
    relation.arel
  else
    relation
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/query_cache.rb:97
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:17
ActiveRecord::ConnectionAdapters::DatabaseStatements#to_sql_and_binds
def to_sql_and_binds(arel_or_sql_string, binds = []) # :nodoc:
  if arel_or_sql_string.respond_to?(:ast)
    unless binds.empty?
      raise "Passing bind parameters with an arel AST is forbidden. " \
        "The values must be stored on the AST directly"
    end

    if prepared_statements
      sql, binds = visitor.accept(arel_or_sql_string.ast, collector).value

      if binds.length > bind_params_length
        unprepared_statement do
          sql, binds = to_sql_and_binds(arel_or_sql_string)
          visitor.preparable = false
        end
      end
    else
      sql = visitor.accept(arel_or_sql_string.ast, collector).value
    end
    [sql.freeze, binds]
  else
    visitor.preparable = false if prepared_statements
    [arel_or_sql_string.dup.freeze, binds]
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/query_cache.rb:98
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract_adapter.rb:609
ActiveRecord::ConnectionAdapters::AbstractAdapter#collector
def collector
  if prepared_statements
    Arel::Collectors::Composite.new(
      Arel::Collectors::SQLString.new,
      Arel::Collectors::Bind.new,
    )
  else
    Arel::Collectors::SubstituteBinds.new(
      self,
      Arel::Collectors::SQLString.new,
    )
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:25
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/sql_string.rb:8
Arel::Collectors::SQLString#initialize
def initialize(*)
  super
  @bind_index = 1
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract_adapter.rb:612
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/plain_string.rb:5
Arel::Collectors::SQLString#initialize
def initialize(*)
  super
  @bind_index = 1
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/sql_string.rb:9
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/bind.rb:6
Arel::Collectors::Bind#initialize
def initialize
  @binds = []
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract_adapter.rb:613
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/composite.rb:6
Arel::Collectors::Composite#initialize
def initialize(left, right)
  @left = left
  @right = right
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract_adapter.rb:611
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/determine_if_preparable_visitor.rb:8
ActiveRecord::ConnectionAdapters::DetermineIfPreparableVisitor#accept
def accept(*)
  @preparable = true
  super
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:25
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/reduce.rb:7
ActiveRecord::ConnectionAdapters::DetermineIfPreparableVisitor#accept
def accept(*)
  @preparable = true
  super
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/determine_if_preparable_visitor.rb:10
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/reduce.rb:13
Arel::Visitors::Reduce#visit
def visit object, collector
  dispatch_method = dispatch[object.class]
  send dispatch_method, object, collector
rescue NoMethodError => e
  raise e if respond_to?(dispatch_method, true)
  superklass = object.class.ancestors.find { |klass|
    respond_to?(dispatch[klass], true)
  }
  raise(TypeError, "Cannot visit #{object.class}") unless superklass
  dispatch[object.class] = dispatch[superklass]
  retry
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/reduce.rb:8
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/visitor.rb:25
Arel::Visitors::Visitor#dispatch
def dispatch
  @dispatch
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/reduce.rb:14
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/sqlite.rb:12
Arel::Visitors::SQLite#visit_Arel_Nodes_SelectStatement
def visit_Arel_Nodes_SelectStatement o, collector
  o.limit = Arel::Nodes::Limit.new(-1) if o.offset && !o.limit
  super
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/reduce.rb:15
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:210
Arel::Visitors::SQLite#visit_Arel_Nodes_SelectStatement
def visit_Arel_Nodes_SelectStatement o, collector
  o.limit = Arel::Nodes::Limit.new(-1) if o.offset && !o.limit
  super
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/sqlite.rb:14
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:240
Arel::Visitors::ToSql#visit_Arel_Nodes_SelectCore
def visit_Arel_Nodes_SelectCore o, collector
  collector << "SELECT"

  collector = maybe_visit o.top, collector

  collector = maybe_visit o.set_quantifier, collector

  collect_nodes_for o.projections, collector, SPACE

  if o.source && !o.source.empty?
    collector << " FROM "
    collector = visit o.source, collector
  end

  collect_nodes_for o.wheres, collector, WHERE, AND
  collect_nodes_for o.groups, collector, GROUP_BY
  unless o.havings.empty?
    collector << " HAVING "
    inject_join o.havings, collector, AND
  end
  collect_nodes_for o.windows, collector, WINDOW

  collector
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:217
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/composite.rb:11
Arel::Collectors::Composite#<<
def << str
  left << str
  right << str
  self
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:241
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/plain_string.rb:13
Arel::Collectors::PlainString#<<
def << str
  @str << str
  self
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/composite.rb:12
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/bind.rb:10
Arel::Collectors::Bind#<<
def << str
  self
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/composite.rb:13
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:812
Arel::Visitors::ToSql#maybe_visit
def maybe_visit thing, collector
  return collector unless thing
  collector << " "
  visit thing, collector
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:243
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:812
Arel::Visitors::ToSql#maybe_visit
def maybe_visit thing, collector
  return collector unless thing
  collector << " "
  visit thing, collector
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:245
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:265
Arel::Visitors::ToSql#collect_nodes_for
def collect_nodes_for nodes, collector, spacer, connector = COMMA
  unless nodes.empty?
    collector << spacer
    len = nodes.length - 1
    nodes.each_with_index do |x, i|
      collector = visit(x, collector)
      collector << connector unless len == i
    end
  end
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:247
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/composite.rb:11
Arel::Collectors::Composite#<<
def << str
  left << str
  right << str
  self
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:267
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/plain_string.rb:13
Arel::Collectors::PlainString#<<
def << str
  @str << str
  self
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/composite.rb:12
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/bind.rb:10
Arel::Collectors::Bind#<<
def << str
  self
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/composite.rb:13
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/reduce.rb:13
Arel::Visitors::Reduce#visit
def visit object, collector
  dispatch_method = dispatch[object.class]
  send dispatch_method, object, collector
rescue NoMethodError => e
  raise e if respond_to?(dispatch_method, true)
  superklass = object.class.ancestors.find { |klass|
    respond_to?(dispatch[klass], true)
  }
  raise(TypeError, "Cannot visit #{object.class}") unless superklass
  dispatch[object.class] = dispatch[superklass]
  retry
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:270
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/visitor.rb:25
Arel::Visitors::Visitor#dispatch
def dispatch
  @dispatch
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/reduce.rb:14
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:727
Arel::Visitors::ToSql#visit_Arel_Attributes_Attribute
def visit_Arel_Attributes_Attribute o, collector
  join_name = o.relation.table_alias || o.relation.name
  collector << "#{quote_table_name join_name}.#{quote_column_name o.name}"
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/reduce.rb:15
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:802
Arel::Visitors::ToSql#quote_table_name
def quote_table_name name
  return name if Arel::Nodes::SqlLiteral === name
  @connection.quote_table_name(name)
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:729
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/sqlite3/quoting.rb:15
ActiveRecord::ConnectionAdapters::SQLite3::Quoting#quote_table_name
def quote_table_name(name)
  @quoted_table_names[name] ||= super.gsub(".", "\".\"").freeze
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:804
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:807
Arel::Visitors::ToSql#quote_column_name
def quote_column_name name
  return name if Arel::Nodes::SqlLiteral === name
  @connection.quote_column_name(name)
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:729
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/composite.rb:11
Arel::Collectors::Composite#<<
def << str
  left << str
  right << str
  self
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:729
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/plain_string.rb:13
Arel::Collectors::PlainString#<<
def << str
  @str << str
  self
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/composite.rb:12
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/bind.rb:10
Arel::Collectors::Bind#<<
def << str
  self
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/composite.rb:13
vendor/bundle/gems/arel-9.0.0/lib/arel/nodes/join_source.rb:14
Arel::Nodes::JoinSource#empty?
def empty?
  !left && right.empty?
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:249
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/composite.rb:11
Arel::Collectors::Composite#<<
def << str
  left << str
  right << str
  self
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:250
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/plain_string.rb:13
Arel::Collectors::PlainString#<<
def << str
  @str << str
  self
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/composite.rb:12
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/bind.rb:10
Arel::Collectors::Bind#<<
def << str
  self
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/composite.rb:13
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/reduce.rb:13
Arel::Visitors::Reduce#visit
def visit object, collector
  dispatch_method = dispatch[object.class]
  send dispatch_method, object, collector
rescue NoMethodError => e
  raise e if respond_to?(dispatch_method, true)
  superklass = object.class.ancestors.find { |klass|
    respond_to?(dispatch[klass], true)
  }
  raise(TypeError, "Cannot visit #{object.class}") unless superklass
  dispatch[object.class] = dispatch[superklass]
  retry
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:251
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/visitor.rb:25
Arel::Visitors::Visitor#dispatch
def dispatch
  @dispatch
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/reduce.rb:14
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:544
Arel::Visitors::ToSql#visit_Arel_Nodes_JoinSource
def visit_Arel_Nodes_JoinSource o, collector
  if o.left
    collector = visit o.left, collector
  end
  if o.right.any?
    collector << SPACE if o.left
    collector = inject_join o.right, collector, SPACE
  end
  collector
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/reduce.rb:15
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/reduce.rb:13
Arel::Visitors::Reduce#visit
def visit object, collector
  dispatch_method = dispatch[object.class]
  send dispatch_method, object, collector
rescue NoMethodError => e
  raise e if respond_to?(dispatch_method, true)
  superklass = object.class.ancestors.find { |klass|
    respond_to?(dispatch[klass], true)
  }
  raise(TypeError, "Cannot visit #{object.class}") unless superklass
  dispatch[object.class] = dispatch[superklass]
  retry
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:546
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/visitor.rb:25
Arel::Visitors::Visitor#dispatch
def dispatch
  @dispatch
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/reduce.rb:14
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:609
Arel::Visitors::ToSql#visit_Arel_Table
def visit_Arel_Table o, collector
  if o.table_alias
    collector << "#{quote_table_name o.name} #{quote_table_name o.table_alias}"
  else
    collector << quote_table_name(o.name)
  end
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/reduce.rb:15
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:802
Arel::Visitors::ToSql#quote_table_name
def quote_table_name name
  return name if Arel::Nodes::SqlLiteral === name
  @connection.quote_table_name(name)
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:613
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/sqlite3/quoting.rb:15
ActiveRecord::ConnectionAdapters::SQLite3::Quoting#quote_table_name
def quote_table_name(name)
  @quoted_table_names[name] ||= super.gsub(".", "\".\"").freeze
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:804
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/composite.rb:11
Arel::Collectors::Composite#<<
def << str
  left << str
  right << str
  self
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:613
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/plain_string.rb:13
Arel::Collectors::PlainString#<<
def << str
  @str << str
  self
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/composite.rb:12
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/bind.rb:10
Arel::Collectors::Bind#<<
def << str
  self
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/composite.rb:13
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:265
Arel::Visitors::ToSql#collect_nodes_for
def collect_nodes_for nodes, collector, spacer, connector = COMMA
  unless nodes.empty?
    collector << spacer
    len = nodes.length - 1
    nodes.each_with_index do |x, i|
      collector = visit(x, collector)
      collector << connector unless len == i
    end
  end
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:254
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:265
Arel::Visitors::ToSql#collect_nodes_for
def collect_nodes_for nodes, collector, spacer, connector = COMMA
  unless nodes.empty?
    collector << spacer
    len = nodes.length - 1
    nodes.each_with_index do |x, i|
      collector = visit(x, collector)
      collector << connector unless len == i
    end
  end
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:255
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:265
Arel::Visitors::ToSql#collect_nodes_for
def collect_nodes_for nodes, collector, spacer, connector = COMMA
  unless nodes.empty?
    collector << spacer
    len = nodes.length - 1
    nodes.each_with_index do |x, i|
      collector = visit(x, collector)
      collector << connector unless len == i
    end
  end
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:260
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:234
Arel::Visitors::ToSql#visit_Arel_Nodes_SelectOptions
def visit_Arel_Nodes_SelectOptions o, collector
  collector = maybe_visit o.limit, collector
  collector = maybe_visit o.offset, collector
  collector = maybe_visit o.lock, collector
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:229
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:812
Arel::Visitors::ToSql#maybe_visit
def maybe_visit thing, collector
  return collector unless thing
  collector << " "
  visit thing, collector
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:235
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:812
Arel::Visitors::ToSql#maybe_visit
def maybe_visit thing, collector
  return collector unless thing
  collector << " "
  visit thing, collector
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:236
vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:812
Arel::Visitors::ToSql#maybe_visit
def maybe_visit thing, collector
  return collector unless thing
  collector << " "
  visit thing, collector
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/visitors/to_sql.rb:237
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/composite.rb:23
Arel::Collectors::Composite#value
def value
  [left.value, right.value]
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:25
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/plain_string.rb:9
Arel::Collectors::PlainString#value
def value
  @str
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/composite.rb:24
vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/bind.rb:19
Arel::Collectors::Bind#value
def value
  @binds
end
# called from vendor/bundle/gems/arel-9.0.0/lib/arel/collectors/composite.rb:24
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/database_limits.rb:67
ActiveRecord::ConnectionAdapters::DatabaseLimits#bind_params_length
def bind_params_length
  65535
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:27
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/query_cache.rb:112
ActiveRecord::ConnectionAdapters::QueryCache#cache_sql
def cache_sql(sql, name, binds)
  @lock.synchronize do
    result =
      if @query_cache[sql].key?(binds)
        ActiveSupport::Notifications.instrument(
          "sql.active_record",
          sql: sql,
          binds: binds,
          type_casted_binds: -> { type_casted_binds(binds) },
          name: name,
          connection_id: object_id,
          cached: true,
        )
        @query_cache[sql][binds]
      else
        @query_cache[sql][binds] = yield
      end
    result.dup
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/query_cache.rb:104
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:59
ActiveRecord::ConnectionAdapters::QueryCache#select_all
def select_all(arel, name = nil, binds = [], preparable: nil)
  if @query_cache_enabled && !locked?(arel)
    arel = arel_from_relation(arel)
    sql, binds = to_sql_and_binds(arel, binds)

    if preparable.nil?
      preparable = prepared_statements ? visitor.preparable : false
    end

    cache_sql(sql, name, binds) { super(sql, name, binds, preparable: preparable) }
  else
    super
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/query_cache.rb:104
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:498
ActiveRecord::ConnectionAdapters::DatabaseStatements#arel_from_relation
def arel_from_relation(relation)
  if relation.is_a?(Relation)
    relation.arel
  else
    relation
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:60
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:17
ActiveRecord::ConnectionAdapters::DatabaseStatements#to_sql_and_binds
def to_sql_and_binds(arel_or_sql_string, binds = []) # :nodoc:
  if arel_or_sql_string.respond_to?(:ast)
    unless binds.empty?
      raise "Passing bind parameters with an arel AST is forbidden. " \
        "The values must be stored on the AST directly"
    end

    if prepared_statements
      sql, binds = visitor.accept(arel_or_sql_string.ast, collector).value

      if binds.length > bind_params_length
        unprepared_statement do
          sql, binds = to_sql_and_binds(arel_or_sql_string)
          visitor.preparable = false
        end
      end
    else
      sql = visitor.accept(arel_or_sql_string.ast, collector).value
    end
    [sql.freeze, binds]
  else
    visitor.preparable = false if prepared_statements
    [arel_or_sql_string.dup.freeze, binds]
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:61
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:481
ActiveRecord::ConnectionAdapters::DatabaseStatements#select_prepared
def select_prepared(sql, name = nil, binds = [])
  exec_query(sql, name, binds, prepare: true)
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:68
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/sqlite3_adapter.rb:209
ActiveRecord::ConnectionAdapters::SQLite3Adapter#exec_query
def exec_query(sql, name = nil, binds = [], prepare: false)
  type_casted_binds = type_casted_binds(binds)

  log(sql, name, binds, type_casted_binds) do
    ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
      # Don't cache statements if they are not prepared
      unless prepare
        stmt = @connection.prepare(sql)
        begin
          cols = stmt.columns
          unless without_prepared_statement?(binds)
            stmt.bind_params(type_casted_binds)
          end
          records = stmt.to_a
        ensure
          stmt.close
        end
      else
        cache = @statements[sql] ||= {
          stmt: @connection.prepare(sql)
        }
        stmt = cache[:stmt]
        cols = cache[:cols] ||= stmt.columns
        stmt.reset!
        stmt.bind_params(type_casted_binds)
        records = stmt.to_a
      end

      ActiveRecord::Result.new(cols, records)
    end
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/database_statements.rb:482
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/quoting.rb:141
ActiveRecord::ConnectionAdapters::Quoting#type_casted_binds
def type_casted_binds(binds) # :nodoc:
  if binds.first.is_a?(Array)
    binds.map { |column, value| type_cast(value, column) }
  else
    binds.map { |attr| type_cast(attr.value_for_database) }
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/sqlite3_adapter.rb:210
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract_adapter.rb:570
ActiveRecord::ConnectionAdapters::AbstractAdapter#log
def log(sql, name = "SQL", binds = [], type_casted_binds = [], statement_name = nil) # :doc:
  @instrumenter.instrument(
    "sql.active_record",
    sql:               sql,
    name:              name,
    binds:             binds,
    type_casted_binds: type_casted_binds,
    statement_name:    statement_name,
    connection_id:     object_id) do
    begin
      @lock.synchronize do
        yield
      end
    rescue => e
      raise translate_exception_class(e, sql)
    end
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/sqlite3_adapter.rb:212
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:90
ActiveRecord::LogSubscriber#logger
def logger
  ActiveRecord::Base.logger
end
# called from vendor/bundle/gems/activesupport-5.2.3/lib/active_support/log_subscriber.rb:80
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/explain_subscriber.rb:8
ActiveRecord::ExplainSubscriber#start
def start(name, id, payload)
  # unused
end
# called from vendor/bundle/gems/activesupport-5.2.3/lib/active_support/notifications/fanout.rb:100
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/statement_pool.rb:23
ActiveRecord::ConnectionAdapters::StatementPool#[]
def [](key)
  cache[key]
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/sqlite3_adapter.rb:227
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/statement_pool.rb:52
ActiveRecord::ConnectionAdapters::StatementPool#cache
def cache
  @cache[Process.pid]
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/statement_pool.rb:24
vendor/bundle/gems/sqlite3-1.4.1/lib/sqlite3/statement.rb:35
SQLite3::Statement#bind_params
def bind_params( *bind_vars )
  index = 1
  bind_vars.flatten.each do |var|
    if Hash === var
      var.each { |key, val| bind_param key, val }
    else
      bind_param index, var
      index += 1
    end
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/sqlite3_adapter.rb:233
vendor/bundle/gems/sqlite3-1.4.1/lib/sqlite3/statement.rb:106
SQLite3::Statement#each
def each
  loop do
    val = step
    break self if done?
    yield val
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/sqlite3_adapter.rb:234
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/result.rb:39
ActiveRecord::Result#initialize
def initialize(columns, rows, column_types = {})
  @columns      = columns
  @rows         = rows
  @hash_rows    = nil
  @column_types = column_types
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/sqlite3_adapter.rb:237
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:90
ActiveRecord::LogSubscriber#logger
def logger
  ActiveRecord::Base.logger
end
# called from vendor/bundle/gems/activesupport-5.2.3/lib/active_support/log_subscriber.rb:84
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:20
ActiveRecord::LogSubscriber#sql
def sql(event)
  self.class.runtime += event.duration
  return unless logger.debug?

  payload = event.payload

  return if IGNORE_PAYLOAD_NAMES.include?(payload[:name])

  name  = "#{payload[:name]} (#{event.duration.round(1)}ms)"
  name  = "CACHE #{name}" if payload[:cached]
  sql   = payload[:sql]
  binds = nil

  unless (payload[:binds] || []).empty?
    casted_params = type_casted_binds(payload[:type_casted_binds])
    binds = "  " + payload[:binds].zip(casted_params).map { |attr, value|
      render_bind(attr, value)
    }.inspect
  end

  name = colorize_payload_name(name, payload[:name])
  sql  = color(sql, sql_color(sql), true)

  debug "  #{name}  #{sql}#{binds}"
end
# called from vendor/bundle/gems/activesupport-5.2.3/lib/active_support/subscriber.rb:101
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:11
ActiveRecord::LogSubscriber.runtime
def self.runtime
  ActiveRecord::RuntimeRegistry.sql_runtime ||= 0
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:21
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/runtime_registry.rb:20
ActiveRecord::RuntimeRegistry.sql_runtime
class_eval %{ def self.#{val}; instance.#{val}; end }, __FILE__, __LINE__
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:12
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:7
ActiveRecord::LogSubscriber.runtime=
def self.runtime=(value)
  ActiveRecord::RuntimeRegistry.sql_runtime = value
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:21
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/runtime_registry.rb:21
ActiveRecord::RuntimeRegistry.sql_runtime=
class_eval %{ def self.#{val}=(x); instance.#{val}=x; end }, __FILE__, __LINE__
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:8
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:90
ActiveRecord::LogSubscriber#logger
def logger
  ActiveRecord::Base.logger
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:22
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:61
ActiveRecord::LogSubscriber#colorize_payload_name
def colorize_payload_name(name, payload_name)
  if payload_name.blank? || payload_name == "SQL" # SQL vs Model Load/Exists
    color(name, MAGENTA, true)
  else
    color(name, CYAN, true)
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:40
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:69
ActiveRecord::LogSubscriber#sql_color
def sql_color(sql)
  case sql
  when /\A\s*rollback/mi
    RED
  when /select .*for update/mi, /\A\s*lock/mi
    WHITE
  when /\A\s*select/i
    BLUE
  when /\A\s*insert/i
    GREEN
  when /\A\s*update/i
    YELLOW
  when /\A\s*delete/i
    RED
  when /transaction\s*\Z/i
    CYAN
  else
    MAGENTA
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:41
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:94
ActiveRecord::LogSubscriber#debug
def debug(progname = nil, &block)
  return unless super

  if ActiveRecord::Base.verbose_query_logs
    log_query_source
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:43
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:90
ActiveRecord::LogSubscriber#logger
def logger
  ActiveRecord::Base.logger
end
# called from vendor/bundle/gems/activesupport-5.2.3/lib/active_support/log_subscriber.rb:96
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:90
ActiveRecord::LogSubscriber#logger
def logger
  ActiveRecord::Base.logger
end
# called from vendor/bundle/gems/activesupport-5.2.3/lib/active_support/log_subscriber.rb:96
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:102
ActiveRecord::LogSubscriber#log_query_source
def log_query_source
  source_line, line_number = extract_callstack(caller_locations)

  if source_line
    if defined?(::Rails.root)
      app_root = "#{::Rails.root.to_s}/".freeze
      source_line = source_line.sub(app_root, "")
    end

    logger.debug("  ↳ #{ source_line }:#{ line_number }")
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:98
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:115
ActiveRecord::LogSubscriber#extract_callstack
def extract_callstack(callstack)
  line = callstack.find do |frame|
    frame.absolute_path && !ignored_callstack(frame.absolute_path)
  end

  offending_line = line || callstack.first

  [
    offending_line.path,
    offending_line.lineno
  ]
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:103
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:130
ActiveRecord::LogSubscriber#ignored_callstack
def ignored_callstack(path)
  path.start_with?(RAILS_GEM_ROOT) ||
  path.start_with?(RbConfig::CONFIG["rubylibdir"])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:117
vendor/bundle/gems/railties-5.2.3/lib/rails.rb:63
Rails.root
def root
  application && application.config.root
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:107
vendor/bundle/gems/railties-5.2.3/lib/rails.rb:39
Rails.application
def application
  @application ||= (app_class.instance if app_class)
end
# called from vendor/bundle/gems/railties-5.2.3/lib/rails.rb:64
vendor/bundle/gems/railties-5.2.3/lib/rails.rb:39
Rails.application
def application
  @application ||= (app_class.instance if app_class)
end
# called from vendor/bundle/gems/railties-5.2.3/lib/rails.rb:64
vendor/bundle/gems/railties-5.2.3/lib/rails/application.rb:372
Rails::Application#config
def config #:nodoc:
  @config ||= Application::Configuration.new(self.class.find_root(self.class.called_from))
end
# called from vendor/bundle/gems/railties-5.2.3/lib/rails.rb:64
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:90
ActiveRecord::LogSubscriber#logger
def logger
  ActiveRecord::Base.logger
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:111
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/explain_subscriber.rb:12
ActiveRecord::ExplainSubscriber#finish
def finish(name, id, payload)
  if ExplainRegistry.collect? && !ignore_payload?(payload)
    ExplainRegistry.queries << payload.values_at(:sql, :binds)
  end
end
# called from vendor/bundle/gems/activesupport-5.2.3/lib/active_support/notifications/fanout.rb:104
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/explain_registry.rb:23
ActiveRecord::ExplainRegistry#collect?
def collect?
  @collect
end
# called from vendor/bundle/gems/activesupport-5.2.3/lib/active_support/per_thread_registry.rb:55
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/result.rb:108
ActiveRecord::Result#initialize_copy
def initialize_copy(other)
  @columns      = columns.dup
  @rows         = rows.dup
  @column_types = column_types.dup
  @hash_rows    = nil
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/connection_adapters/abstract/query_cache.rb:129
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/model_schema.rb:345
ActiveRecord::ModelSchema::ClassMethods.attribute_types
def attribute_types # :nodoc:
  load_schema
  @attribute_types ||= Hash.new(Type.default_value)
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/querying.rb:43
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/model_schema.rb:454
ActiveRecord::ModelSchema::ClassMethods.load_schema
def load_schema
  return if schema_loaded?
  @load_schema_monitor.synchronize do
    return if defined?(@columns_hash) && @columns_hash

    load_schema!

    @schema_loaded = true
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/model_schema.rb:346
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/model_schema.rb:450
ActiveRecord::ModelSchema::ClassMethods.schema_loaded?
def schema_loaded?
  defined?(@schema_loaded) && @schema_loaded
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/model_schema.rb:455
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/result.rb:47
ActiveRecord::Result#length
def length
  @rows.length
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/querying.rb:47
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/result.rb:55
ActiveRecord::Result#each
def each
  if block_given?
    hash_rows.each { |row| yield row }
  else
    hash_rows.to_enum { @rows.size }
  end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/querying.rb:52
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/result.rb:123
ActiveRecord::Result#hash_rows
def hash_rows
  @hash_rows ||=
    begin
      # We freeze the strings to prevent them getting duped when
      # used as keys in ActiveRecord::Base's @attributes hash
      columns = @columns.map { |c| c.dup.freeze }
      @rows.map { |row|
        # In the past we used Hash[columns.zip(row)]
        #  though elegant, the verbose way is much more efficient
        #  both time and memory wise cause it avoids a big array allocation
        #  this method is called a lot and needs to be micro optimised
        hash = {}

        index = 0
        length = columns.length

        while index < length
          hash[columns[index]] = row[index]
          index += 1
        end

        hash
      }
    end
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/result.rb:57
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:69
ActiveRecord::QueryMethods#preload_values
def #{method_name}                   # def includes_values
  get_value(#{name.inspect})         #   get_value(:includes)
end                                  # end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:563
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:907
ActiveRecord::QueryMethods#get_value
def get_value(name) # :nodoc:
  @values.fetch(name, DEFAULT_VALUES[name])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:70
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:472
ActiveRecord::Relation#eager_loading?
def eager_loading?
  @should_eager_load ||=
    eager_load_values.any? ||
    includes_values.any? && (joined_includes_values.any? || references_eager_loaded_tables?)
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:564
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:69
ActiveRecord::QueryMethods#eager_load_values
def #{method_name}                   # def includes_values
  get_value(#{name.inspect})         #   get_value(:includes)
end                                  # end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:474
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:907
ActiveRecord::QueryMethods#get_value
def get_value(name) # :nodoc:
  @values.fetch(name, DEFAULT_VALUES[name])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:70
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:69
ActiveRecord::QueryMethods#includes_values
def #{method_name}                   # def includes_values
  get_value(#{name.inspect})         #   get_value(:includes)
end                                  # end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:475
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:907
ActiveRecord::QueryMethods#get_value
def get_value(name) # :nodoc:
  @values.fetch(name, DEFAULT_VALUES[name])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:70
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:69
ActiveRecord::QueryMethods#includes_values
def #{method_name}                   # def includes_values
  get_value(#{name.inspect})         #   get_value(:includes)
end                                  # end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:564
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:907
ActiveRecord::QueryMethods#get_value
def get_value(name) # :nodoc:
  @values.fetch(name, DEFAULT_VALUES[name])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:70
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:69
ActiveRecord::QueryMethods#readonly_value
def #{method_name}                   # def includes_values
  get_value(#{name.inspect})         #   get_value(:includes)
end                                  # end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation.rb:571
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:907
ActiveRecord::QueryMethods#get_value
def get_value(name) # :nodoc:
  @values.fetch(name, DEFAULT_VALUES[name])
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/relation/query_methods.rb:70
vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal.rb:150
ActionController::Metal#content_type
delegate :headers, :status=, :location=, :content_type=,
         :status, :location, :content_type, to: "@_response"
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/renderers.rb:166
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:247
ActionDispatch::Response#content_type
def content_type
  parsed_content_type_header.mime_type
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal.rb:150
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:422
ActionDispatch::Response#parsed_content_type_header
def parsed_content_type_header
  parse_content_type(get_header(CONTENT_TYPE))
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:248
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:182
ActionDispatch::Response#get_header
def get_header(key);    headers[key];       end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:423
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:412
ActionDispatch::Response#parse_content_type
def parse_content_type(content_type)
  if content_type && match = CONTENT_TYPE_PARSER.match(content_type)
    ContentTypeHeader.new(match[:type], match[:charset])
  else
    NullContentTypeHeader
  end
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:423
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/mime_type.rb:40
Mime.[]
def [](type)
  return type if type.is_a?(Type)
  Type.lookup_by_extension(type)
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/renderers.rb:166
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/mime_type.rb:148
Mime::Type.lookup_by_extension
def lookup_by_extension(extension)
  EXTENSION_LOOKUP[extension.to_s]
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/mime_type.rb:42
vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal.rb:150
ActionController::Metal#content_type=
delegate :headers, :status=, :location=, :content_type=,
         :status, :location, :content_type, to: "@_response"
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/renderers.rb:166
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:229
ActionDispatch::Response#content_type=
def content_type=(content_type)
  return unless content_type
  new_header_info = parse_content_type(content_type.to_s)
  prev_header_info = parsed_content_type_header
  charset = new_header_info.charset || prev_header_info.charset
  charset ||= self.class.default_charset unless prev_header_info.mime_type
  set_content_type new_header_info.mime_type, charset
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal.rb:150
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/mime_type.rb:232
Mime::Type#to_s
def to_s
  @string
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:231
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:412
ActionDispatch::Response#parse_content_type
def parse_content_type(content_type)
  if content_type && match = CONTENT_TYPE_PARSER.match(content_type)
    ContentTypeHeader.new(match[:type], match[:charset])
  else
    NullContentTypeHeader
  end
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:231
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:422
ActionDispatch::Response#parsed_content_type_header
def parsed_content_type_header
  parse_content_type(get_header(CONTENT_TYPE))
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:232
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:182
ActionDispatch::Response#get_header
def get_header(key);    headers[key];       end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:423
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:412
ActionDispatch::Response#parse_content_type
def parse_content_type(content_type)
  if content_type && match = CONTENT_TYPE_PARSER.match(content_type)
    ContentTypeHeader.new(match[:type], match[:charset])
  else
    NullContentTypeHeader
  end
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:423
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:426
ActionDispatch::Response#set_content_type
def set_content_type(content_type, charset)
  type = (content_type || "").dup
  type << "; charset=#{charset.to_s.downcase}" if charset
  set_header CONTENT_TYPE, type
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:235
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:183
ActionDispatch::Response#set_header
def set_header(key, v); headers[key] = v;   end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:429
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:44
ActionDispatch::Response::Header#[]=
def []=(k, v)
  if @response.sending? || @response.sent?
    raise ActionDispatch::IllegalStateError, "header already sent"
  end

  super
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:183
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:219
ActionDispatch::Response#sending?
def sending?;   synchronize { @sending };   end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:45
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:221
ActionDispatch::Response#sent?
def sent?;      synchronize { @sent };      end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:45
vendor/bundle/gems/actionpack-5.2.3/lib/abstract_controller/rendering.rb:54
AbstractController::Rendering#rendered_format
def rendered_format
  Mime[:text]
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/abstract_controller/rendering.rb:29
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/mime_type.rb:40
Mime.[]
def [](type)
  return type if type.is_a?(Type)
  Type.lookup_by_extension(type)
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/abstract_controller/rendering.rb:55
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/mime_type.rb:148
Mime::Type.lookup_by_extension
def lookup_by_extension(extension)
  EXTENSION_LOOKUP[extension.to_s]
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/mime_type.rb:42
vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/rendering.rb:75
ActionController::Rendering#_set_rendered_content_type
def _set_rendered_content_type(format)
  if format && !response.content_type
    self.content_type = format.to_s
  end
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/abstract_controller/rendering.rb:29
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:247
ActionDispatch::Response#content_type
def content_type
  parsed_content_type_header.mime_type
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal/rendering.rb:76
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:422
ActionDispatch::Response#parsed_content_type_header
def parsed_content_type_header
  parse_content_type(get_header(CONTENT_TYPE))
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:248
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:182
ActionDispatch::Response#get_header
def get_header(key);    headers[key];       end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:423
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:412
ActionDispatch::Response#parse_content_type
def parse_content_type(content_type)
  if content_type && match = CONTENT_TYPE_PARSER.match(content_type)
    ContentTypeHeader.new(match[:type], match[:charset])
  else
    NullContentTypeHeader
  end
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:423
vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal.rb:175
ActionController::Metal#response_body=
def response_body=(body)
  body = [body] unless body.nil? || body.respond_to?(:each)
  response.reset_body!
  return unless body
  response.body = body
  super
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/abstract_controller/rendering.rb:31
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:352
ActionDispatch::Response#reset_body!
def reset_body!
  @stream = build_buffer(self, [])
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal.rb:177
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:452
ActionDispatch::Response#build_buffer
def build_buffer(response, body)
  Buffer.new response, body
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:353
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:100
ActionDispatch::Response::Buffer#initialize
def initialize(response, buf)
  @response = response
  @buf      = buf
  @closed   = false
  @str_body = nil
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:453
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:312
ActionDispatch::Response#body=
def body=(body)
  if body.respond_to?(:to_path)
    @stream = body
  else
    synchronize do
      @stream = build_buffer self, munge_body_object(body)
    end
  end
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_controller/metal.rb:179
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:456
ActionDispatch::Response#munge_body_object
def munge_body_object(body)
  body.respond_to?(:each) ? body : [body]
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:317
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:452
ActionDispatch::Response#build_buffer
def build_buffer(response, body)
  Buffer.new response, body
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:317
vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:100
ActionDispatch::Response::Buffer#initialize
def initialize(response, buf)
  @response = response
  @buf      = buf
  @closed   = false
  @str_body = nil
end
# called from vendor/bundle/gems/actionpack-5.2.3/lib/action_dispatch/http/response.rb:453
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:15
ActiveRecord::LogSubscriber.reset_runtime
def self.reset_runtime
  rt, self.runtime = runtime, 0
  rt
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/railties/controller_runtime.rb:32
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:11
ActiveRecord::LogSubscriber.runtime
def self.runtime
  ActiveRecord::RuntimeRegistry.sql_runtime ||= 0
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:16
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/runtime_registry.rb:20
ActiveRecord::RuntimeRegistry.sql_runtime
class_eval %{ def self.#{val}; instance.#{val}; end }, __FILE__, __LINE__
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:12
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:7
ActiveRecord::LogSubscriber.runtime=
def self.runtime=(value)
  ActiveRecord::RuntimeRegistry.sql_runtime = value
end
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:16
vendor/bundle/gems/activerecord-5.2.3/lib/active_record/runtime_registry.rb:21
ActiveRecord::RuntimeRegistry.sql_runtime=
class_eval %{ def self.#{val}=(x); instance.#{val}=x; end }, __FILE__, __LINE__
# called from vendor/bundle/gems/activerecord-5.2.3/lib/active_record/log_subscriber.rb:8