Sha256: 23ddf8f3ebb82bb80918a51b5ca500ebbf4646135ab43a709f8fc751669d8a60

Contents?: true

Size: 1.53 KB

Versions: 59

Compression:

Stored size: 1.53 KB

Contents

# 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/behaviour")
    #
    # @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($stdout).warn(e.message)
      end
    end
  end
end

Version data entries

59 entries across 55 versions & 3 rubygems

Version Path
mongoid-7.0.13 lib/rails/mongoid.rb
mongoid-7.0.12 lib/rails/mongoid.rb
mongoid-6.4.8 lib/rails/mongoid.rb
mongoid-7.0.11 lib/rails/mongoid.rb
mongoid-7.0.10 lib/rails/mongoid.rb
mongoid-6.4.7 lib/rails/mongoid.rb
mongoid-6.4.5 lib/rails/mongoid.rb
mongoid-7.0.8 lib/rails/mongoid.rb
mongoid-7.0.7 lib/rails/mongoid.rb
mongoid-7.0.6 lib/rails/mongoid.rb
mongoid-5.4.1 lib/rails/mongoid.rb
mongoid-7.0.5 lib/rails/mongoid.rb
mongoid-7.0.4 lib/rails/mongoid.rb
mongoid-6.4.4 lib/rails/mongoid.rb
mongoid-7.0.3 lib/rails/mongoid.rb
mongoid-6.4.2 lib/rails/mongoid.rb
mongoid-7.0.2 lib/rails/mongoid.rb
mongoid-7.0.1 lib/rails/mongoid.rb
mongoid-6.4.1 lib/rails/mongoid.rb
mongoid-5.4.0 lib/rails/mongoid.rb