# Copyright (c) 2021 Contrast Security, Inc. See https://www.contrastsecurity.com/enduser-terms-0317a for more details. # frozen_string_literal: true require 'contrast/utils/job_servers_running' require 'contrast/components/logger' module Contrast module Framework module Rails # A Railtie to allow for the automatic hooking of the Agent into a Rails application. class Railtie < ::Rails::Railtie include Contrast::Components::Logger::InstanceMethods initializer 'Contrast Ruby Agent Initializer' do |app| log_rails = defined?(Rails) && defined?(Rails.logger) Rails.logger.debug("In railtie ::#{ app.middleware.inspect }") if log_rails if ::Contrast::APP_CONTEXT.instrument_middleware_stack? ::Contrast::AGENT.insert_middleware(app) else Rails.logger.debug('Detected a running job server, skipping Contrast middleware insertion.') if log_rails logger.debug('Disabling Contrast for process', p_id: Process.pid) end end rake_tasks do load 'contrast/tasks/service.rb' load 'contrast/tasks/config.rb' end end end end end