Sha256: 06f8b38fc250425a08b5510398c18ec9642ac763c1f58ff262a05937799b4995

Contents?: true

Size: 1.56 KB

Versions: 27

Compression:

Stored size: 1.56 KB

Contents

# frozen_string_literal: true
# encoding: utf-8

module Rails
  module Mongoid
    extend self

    # Use the application configuration to get every model and require it, so
    # that indexing and inheritance work in both development and production
    # with the same results.
    #
    # @example Load all the application models.
    #   Rails::Mongoid.load_models(app)
    #
    # @param [ Application ] app The rails application.
    def load_models(app)
      app.config.paths["app/models"].expanded.each do |path|
        preload = ::Mongoid.preload_models
        if preload.resizable?
          files = preload.map { |model| "#{path}/#{model.underscore}.rb" }
        else
          files = Dir.glob("#{path}/**/*.rb")
        end

        files.sort.each do |file|
          load_model(file.gsub("#{path}/" , "").gsub(".rb", ""))
        end
      end
    end

    # Conditionally calls `Rails::Mongoid.load_models(app)` if the
    # `::Mongoid.preload_models` is `true`.
    #
    # @param [ Application ] app The rails application.
    def preload_models(app)
      load_models(app) if ::Mongoid.preload_models
    end

    private

    # I don't want to mock out kernel for unit testing purposes, so added this
    # method as a convenience.
    #
    # @example Load the model.
    #   Mongoid.load_model("/mongoid/behavior")
    #
    # @param [ String ] file The base filename.
    #
    # @since 2.0.0.rc.3
    def load_model(file)
      begin
        require_dependency(file)
      rescue Exception => e
        Logger.new(STDERR).warn(e.message)
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 2 rubygems

Version Path
mongoid-7.3.5 lib/rails/mongoid.rb
mongoid-7.3.4 lib/rails/mongoid.rb
mongoid-7.1.11 lib/rails/mongoid.rb
mongoid-7.2.6 lib/rails/mongoid.rb
mongoid-7.3.3 lib/rails/mongoid.rb
mongoid-7.3.2 lib/rails/mongoid.rb
mongoid-7.2.5 lib/rails/mongoid.rb
mongoid-7.1.10 lib/rails/mongoid.rb
mongoid-7.1.9 lib/rails/mongoid.rb
mongoid-7.2.4 lib/rails/mongoid.rb
mongoid-7.3.1 lib/rails/mongoid.rb
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/gems/mongoid-7.1.7/lib/rails/mongoid.rb
mongoid-7.3.0 lib/rails/mongoid.rb
mongoid-7.2.3 lib/rails/mongoid.rb
mongoid-7.1.8 lib/rails/mongoid.rb
mongoid-7.2.2 lib/rails/mongoid.rb
mongoid-7.2.1 lib/rails/mongoid.rb
mongoid-7.1.7 lib/rails/mongoid.rb
mongoid-7.2.0 lib/rails/mongoid.rb
mongoid-7.1.6 lib/rails/mongoid.rb