Sha256: 371145ccd3d24e2101b38fdd5890f6d2670a187d86b9ece5a85a096d957f11af

Contents?: true

Size: 667 Bytes

Versions: 1

Compression:

Stored size: 667 Bytes

Contents

require 'active_record'

module Nullalign
  class Models
    MODEL_DIRECTORY_REGEXP = /models/
    IGNORE_DIRECTORY_REGEXP = /activestorage-\S*\/app\/models/

    attr_reader :load_path

    def initialize(load_path)
      @load_path = load_path
    end

    def dirs
      load_path.select { |lp| MODEL_DIRECTORY_REGEXP =~ lp.to_s unless IGNORE_DIRECTORY_REGEXP =~ lp.to_s}
    end

    def preload_all
      self.dirs.each do |d|
        Dir.glob(File.join(d, "**", "*.rb")).each do |model_filename|
          Kernel.require_dependency model_filename
        end
      end
    end

    def all
      ActiveRecord::Base.descendants.sort_by(&:name)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nullalign-0.0.4 lib/nullalign/models.rb