Módulo: Mongoid::Loadable

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

Overview

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

Colapso delresumen constante

RUTAS_DE_MODELO_PREDETERMINADAS =

Lista predeterminada de rutas donde se deben buscar las clases del modelo. Si Rails está presente, se usarán las rutas "app/models". (Ver #model_paths).

%w( ./app/models ./lib/models ).freeze
PATRONES IGNORADOS POR DEFECTO =

Lista predeterminada de patrones glob que coinciden con las rutas que se deben ignorar al cargar modelos. El valor predeterminado es"/models/concerns/",que Rails usa para las extensiones de modelos (y que causan errores al cargarlos desordenadamente).

Ver #ignore_patterns.

%w( */modelos/preocupaciones/* ).freeze

Colapso del resumen del método de instancia

Detalles del método de instancia

#archivos_bajo_ruta(ruta) ⇒ Matriz<String>

Dada una única ruta, devuelve todos los archivos ruby ​​bajo esa ruta (o, si 'preload_models` es una lista de nombres de modelos, devuelve solo los archivos de esos modelos nombrados).

Parámetros:

  • ruta (Cadena) -

    el camino a buscar

Devuelve:

  • (Matriz<String>)

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



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

def archivos_bajo_ruta(ruta)
  archivos = Si preload_models.¿redimensionable?
      preload_models.
        map { |modelo| "#{ruta}/#{modelo.guión bajo }.rb" }.
        Seleccione { |file_name| Archivo.¿Existe?(file_name) }
    else
      Dir.glob("#{ruta}/**/*.rb").
        rechazar { |file_name| ¿ignorado?(file_name) }
    end

  # eliminar la ruta y el sufijo de cada entrada
  archivos.map { |archivo| archivo.gsub(/^#{path}\// , "").gsub(/\.rb$/, "") }
end

#archivos_bajo_rutas(rutas) ⇒ Array<String>

Dada una lista de rutas, devuelve todos los archivos ruby ​​bajo esa ruta (o, si 'preload_models` es una lista de nombres de modelos, devuelve solo los archivos de esos modelos nombrados).

Parámetros:

  • paths (Matriz<String>)

    la lista de rutas para buscar

Devuelve:

  • (Matriz<String>)

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



51
52
53
# Archivo 'lib/mongoid/loadable.rb', línea 51

def archivos_bajo_rutas(paths)
  paths.flat_map { |ruta| archivos_bajo_ruta(ruta) }
end

#ignore_patternsArray<String>

Devuelve la matriz de patrones glob que determinan si el cargador de modelos debe ignorar una ruta determinada.

Devuelve:

  • (Matriz<String>)

    La matriz de patrones ignorados



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

def ignore_patterns
  @ignore_patterns ||= PATRONES IGNORADOS POR DEFECTO.dup
end

#ignore_patterns=(patrones) ⇒ Objeto

Establece los patrones de ignorancia en la matriz de patrones dada. Estos son patrones globales que determinan si el cargador de modelos debe ignorar una ruta dada.

Parámetros:

  • patrones (Matriz<String>)

    La lista de patrones glob



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

def ignorar_patrones=(patrones)
  @ignore_patterns = patrones
end

#ignored?(file_path) ⇒ true | false

Devuelve verdadero si la ruta de archivo dada coincide con alguno de los patrones de ignoración.

Parámetros:

  • ruta_del_archivo (Cadena) -

    La ruta del archivo a tener en cuenta

Devuelve:

  • (verdadero | falso)

    si la ruta de archivo dada debe ignorarse o no.



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 forma parte de una API privada. Debe evitarlo si es posible, ya que podría eliminarse o modificarse en el futuro.

Un método de conveniencia para cargar el archivo de un modelo. Si el método “require_dependency” de Rails existe, se utilizará; de lo contrario, se usará `require`.

Ejemplos:

Cargar el modelo.

Mongoid.load_model("/mongoid/behavior")

Parámetros:

  • archivo (Cadena) -

    El nombre del archivo base.



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

def modelo de carga(archivo)
  Si ¿definido?(requerir_dependencia)
    requerir_dependencia(archivo)
  else
    requieren(archivo)
  end
end

#load_models(paths = model_paths) ⇒ objeto

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

Ejemplos:

Cargue todos los modelos de aplicación desde las rutas de modelos predeterminadas.

Mongoid.load_models

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

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

Parámetros:

  • paths (arreglo) (predeterminado: 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.



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

def load_models(paths = rutas_del_modelo)
  archivos = archivos_bajo_rutas(paths)

  archivos.sort.cada hacer |archivo|
    modelo de carga(archivo)
  end

  nulo
end

#model_pathsMatriz<String>

Devuelve la matriz de rutas donde se encuentran las definiciones de modelo de la aplicación. Si Rails está cargado, el valor predeterminado es la ruta "app/models" configurada (p. ej.,'config.paths');de lo contrario, el valor predeterminado es `%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 modelos; no es necesario indicar cada subdirectorio, siempre que estas rutas raíz estén ubicadas en '$LOAD_PATH`.

Devuelve:

  • (Matriz<String>)

    la matriz de rutas del modelo



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

def rutas_del_modelo
  @model_paths ||= ¿definido?(Carriles) ?
    Carriles.aplicación.config.paths["aplicación/modelos"].expandido :
    DEFAULT_MODEL_PATHS
end

#model_paths=(rutas) ⇒ Objeto

Establece las rutas del modelo en la matriz de rutas dada. Estas son las rutas donde se encuentran las definiciones del modelo de la aplicación.

Parámetros:

  • paths (Matriz<String>)

    La lista de rutas del modelo



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

def rutas_del_modelo=(paths)
  @model_paths = paths
end