class AutoloadRecords::Engine::Middleware

Public Class Methods

model_files() click to toggle source
# File lib/lhs/concerns/autoload_records.rb, line 30
def self.model_files
  Dir.glob(Rails.root.join('app', 'models', '**', '*.rb'))
end
new(app) click to toggle source
# File lib/lhs/concerns/autoload_records.rb, line 21
def initialize(app)
  @app = app
end
require_direct_inheritance() click to toggle source
# File lib/lhs/concerns/autoload_records.rb, line 34
def self.require_direct_inheritance
  model_files.sort.map do |file|
    next unless File.read(file).match('LHS::Record')
    require_dependency file
    file.split('models/').last.gsub('.rb', '').classify
  end.compact
end
require_inheriting_records(parents) click to toggle source
# File lib/lhs/concerns/autoload_records.rb, line 42
def self.require_inheriting_records(parents)
  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
require_records() click to toggle source
# File lib/lhs/concerns/autoload_records.rb, line 51
def self.require_records
  require_inheriting_records(require_direct_inheritance)
end

Public Instance Methods

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