class AutoloadRecords::Engine::Middleware

Constants

MODEL_FILES

Public Class Methods

new(app) click to toggle source
# File lib/dhs/concerns/autoload_records.rb, line 24
def initialize(app)
  @app = app
end
require_direct_inheritance() click to toggle source
# File lib/dhs/concerns/autoload_records.rb, line 33
def self.require_direct_inheritance
  Rails.application.reloader.to_prepare do
    Dir.glob(Rails.root.join(MODEL_FILES)).each do |file|
      next unless File.read(file).match('DHS::Record')
      require_dependency file
      file.split('models/').last.gsub('.rb', '').classify
    end.compact
  end
end
require_inheriting_records(parents) click to toggle source
# File lib/dhs/concerns/autoload_records.rb, line 43
def self.require_inheriting_records(parents)
  Rails.application.reloader.to_prepare do
    Dir.glob(Rails.root.join(MODEL_FILES)).each do |file|
      file_content = File.read(file)
      next if parents.none? { |parent| file_content.match(/\b#{parent}\b/) }
      next if file_content.match?('extend ActiveSupport::Concern')
      require_dependency file
    end
  end
end
require_records() click to toggle source
# File lib/dhs/concerns/autoload_records.rb, line 54
def self.require_records
  require_inheriting_records(require_direct_inheritance)
end

Public Instance Methods

call(env) click to toggle source
# File lib/dhs/concerns/autoload_records.rb, line 28
def call(env)
  self.class.require_records
  @app.call(env)
end