Módulo: Mongoid::Loadable

Incluido en:
Mongoid
Definido en:
lib/mongoid/loadable.rb

Overview

Define cómo Mongoid puede cargar automáticamente todos los modelos definidos.

Resumen de constantes colapsar

DEFAULT_MODEL_PATHS =

La lista predeterminada de rutas donde se deben buscar las clases de model. Si Rails está presente, se utilizarán las rutas de "aplicación/models" en su lugar. (Ver #model_paths.)

%w[ ./app/models ./lib/models ].freeze
DEFAULT_IGNORE_PATTERNS =

La lista predeterminada de patrones glob que coinciden con las rutas a ignorar al cargar modelos. Por defecto, es '/models/concerns/', que Rails utiliza para extensiones a los modelos (y que pueden causar errores si se cargan fuera de orden).

Consulta #ignore_patterns.

%w[ */modelos/preocupaciones/* ].freeze

Resumen del método de instancia colapsar

Detalles del método de instancia

#files_under_path(ruta) ⇒ Arreglo<String>

Dado un solo directorio, devuelve todos los archivos Ruby debajo de ese directorio (o, si preload_models es una lista de nombres de model, devuelve solo los archivos para esos model nombrados).

Parámetros:

  • ruta (string)

    la ruta a buscar

Devuelve:

  • (arreglo<String>)

    los nombres de archivos normalizados, adecuados para cargar a través de require_dependency o require.



61
62
63
64
65
66
67
68
69
70
71
72
73
# Archivo 'lib/mongoid/loadable.rb', línea 61

def archivos en la ruta(ruta)
  archivo = si preload_models.¿redimensionable?
            preload_models
              .map { |Modelo| "#{ruta}/#{modelo.guion_bajo}.rb" }
              .Seleccionar { |file_name| Archivo.existir?(file_name) }
          else
            Dir.glob("#{path}/**/*.rb")
               .rechazar { |file_name| ¿ignorado?(file_name) }
          end

  # elimina la ruta y el sufijo de cada entrada
  archivo.map { |Archivo| Archivo.gsub(%r{^#{ruta}/}, '').gsub(/\.rb$/, '') }
end

#archivos_bajo_rutas(rutas) ⇒ arreglo<String>

Dada una lista de rutas, devuelve todos los archivos Ruby bajo esa ruta (o, si preload_models es una lista de model names, devuelve solo los archivos de esos named models).

Parámetros:

  • paths (arreglo<String>)

    la lista de rutas para buscar

Devuelve:

  • (arreglo<String>)

    los nombres de archivos normalizados, adecuados para cargar a través de require_dependency o require.



49
50
51
# Archivo 'lib/mongoid/loadable.rb', línea 49

def files_under_paths(paths)
  paths.flat_map { |ruta| archivos en la ruta(ruta) }
end

#ignore_patternsArray<String>

Devuelve el arreglo de patrones glob que determinan si el cargador del modelo debe ignorar una ruta determinada.

Devuelve:

  • (arreglo<String>)

    el arreglo de patrones de exclusión



115
116
117
# Archivo 'lib/mongoid/loadable.rb', línea 115

def ignore_patterns
  @ignore_patterns ||= DEFAULT_IGNORE_PATTERNS.dup
end

#ignore_patterns=(patterns) ⇒ Objeto

Establece los patrones de ignorar en el arreglo dado de patrones. Estos son patrones glob que determinan si el cargador de modelos debe ignorar una ruta determinada o no.

Parámetros:

  • patrón (arreglo<String>)

    La lista de patrones globales



132
133
134
# Archivo 'lib/mongoid/loadable.rb', línea 132

def ignore_patterns=(patrón)
  @ignore_patterns = patrón
end

#ignored?(file_path) ⇒ true | false

Devuelve true si la ruta de archivo dada coincide con alguno de los patrones de ignorar.

Parámetros:

  • ruta_del_archivo (string)

    La ruta del archivo a considerar

Devuelve:

  • (true | false)

    si se debe o no ignorar la ruta de archivo dada.



142
143
144
# Archivo 'lib/mongoid/loadable.rb', línea 142

def ¿ignorado?(ruta_del_archivo)
  ignore_patterns.any? { |Patrón| Archivo.¿fnmatch?(Patrón, ruta_del_archivo) }
end

#load_model(archivo) ⇒ Objeto

Este método es parte de una API privada. Se debe evitar el uso de este método si es posible, ya que podría eliminarse o modificarse en el futuro.

Un método práctico para cargar el archivo de un model. Si existe el método require_dependency de Rails, se usará; de lo contrario, se usará require.

Ejemplos:

Cargue el modelo.

Mongoid.load_model("/mongoid/behavior")

Parámetros:

  • Archivo (string)

    El nombre de archivo base.



85
86
87
88
89
90
91
# Archivo 'lib/mongoid/loadable.rb', línea 85

def load_model(Archivo)
  si ¿definido?(require_dependency)
    require_dependency(Archivo)
  else
    requerir(Archivo)
  end
end

#load_models(paths = model_paths) ⇒ objeto

Busca una lista de rutas del modelo para obtener cada modelo y requerirlo, de modo que la indexación y la herencia funcionen tanto en el desarrollo como en la producción con los mismos resultados.

Ejemplos:

Cargar todos los modelos de aplicación desde las rutas de modelos por defecto.

Mongoid.load_models

Cargar todos los modelos de la aplicación desde un conjunto no estándar de rutas.

Mongoid.load_models(%w( ./models ./admin/models ))

Parámetros:

  • paths (arreglo) (por defecto: model_paths)

    La lista de rutas donde se deben buscar los archivos de modelo. Estos deben ser rutas absolutas o relativas al directorio de trabajo actual.



31
32
33
34
35
36
37
38
39
# Archivo 'lib/mongoid/loadable.rb', línea 31

def load_models(paths = model_paths)
  archivo = files_under_paths(paths)

  archivo.sort.cada hacer |Archivo|
    load_model(Archivo)
  end

  nulo
end

#model_pathsArray<String>

Devuelve el arreglo de rutas donde se encuentran las definiciones de model de la aplicación. Si Rails está cargado, el valor por defecto es las rutas configuradas de "aplicación/models" (por ejemplo, config.paths["app/models"]); de lo contrario, el valor es 'por defecto' '%w(./app/models ./lib/models)' .

Tenga en cuenta que estas rutas son las raíces de las jerarquías de directorios donde se encuentran los models; no es necesario indicar cada subcarpeta, siempre y cuando estas rutas raíz estén ubicadas en $LOAD_PATH.

Devuelve:

  • (arreglo<String>)

    el arreglo de rutas de modelo



103
104
105
106
107
108
109
# Archivo 'lib/mongoid/loadable.rb', línea 103

def model_paths
  @model_paths ||= si ¿definido?(Tirantes)
                     Tirantes.aplicación.config.paths['app/models'].Ampliado
                   else
                     DEFAULT_MODEL_PATHS
                   end
end

#model_paths=(paths) ⇒ Object

Establece las rutas del model en el arreglo de rutas especificado. Estas son las rutas en las que se encuentran las definiciones de model de la aplicación.

Parámetros:

  • paths (arreglo<String>)

    Lista de rutas de modelos



123
124
125
# Archivo 'lib/mongoid/loadable.rb', línea 123

def model_paths=(paths)
  @model_paths = paths
end