Sha256: a6ad6fecd39a23c592df4038766ee5c7034aee22015c3dd1cefe537692d94916

Contents?: true

Size: 1.97 KB

Versions: 2

Compression:

Stored size: 1.97 KB

Contents

# frozen_string_literal: true

module Gouda
  class Railtie < Rails::Railtie
    rake_tasks do
      task preload: :setup do
        if defined?(Rails) && Rails.respond_to?(:application)
          if Rails.application.config.eager_load
            ActiveSupport.run_load_hooks(:before_eager_load, Rails.application)
            Rails.application.config.eager_load_namespaces.each(&:eager_load!)
          end
        end
      end
    end

    initializer "gouda.configure_rails_initialization" do
      Gouda.config.app_executor = if defined?(Rails) && Rails.respond_to?(:application)
        Rails.application.executor
      else
        ActiveSupport::Executor
      end
    end

    initializer "gouda.active_job.extensions" do
      ActiveSupport.on_load :active_job do
        include Gouda::ActiveJobExtensions::Interrupts
      end
    end

    generators do
      require "generators/gouda/install_generator"
    end

    # The `to_prepare` block which is executed once in production
    # and before each request in development.
    config.to_prepare do
      Gouda::Scheduler.update_schedule_from_config!

      if defined?(Rails) && Rails.respond_to?(:application)
        config_from_rails = Rails.application.config.try(:gouda)
        if config_from_rails
          Gouda.config.cleanup_preserved_jobs_before = config_from_rails[:cleanup_preserved_jobs_before]
          Gouda.config.preserve_job_records = config_from_rails[:preserve_job_records]
          Gouda.config.polling_sleep_interval_seconds = config_from_rails[:polling_sleep_interval_seconds]
          Gouda.config.worker_thread_count = config_from_rails[:worker_thread_count]
          if Gouda.config.logger
            Gouda.config.logger.level = config_from_rails[:log_level] || Gouda.config.log_level
          end
        end
      else
        Gouda.config.preserve_job_records = false
        Gouda.config.polling_sleep_interval_seconds = 0.2
        Gouda.config.logger.level = Gouda.config.log_level
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
gouda-0.1.1 lib/gouda/railtie.rb
gouda-0.1.0 lib/gouda/railtie.rb