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.

Colapso delresumen constante

RUTAS_DE_MODELO_PREDETERMINADAS =

La lista por defecto de rutas donde se deben buscar las clases del modelo. Si Rails está presente, se utilizarán las rutas “app/models” en su lugar. (Consultar #model_paths.)

%w( ./app/models ./lib/models ).freeze
DEFAULT_IGNORE_PATTERNS =

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).

Consulta #ignore_patterns.

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

Resumen del método de instancia colapsar

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 (string)

    el camino a buscar

Devuelve:

  • (arreglo<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 en la ruta(ruta)
  archivo = si preload_models.¿redimensionable?
      preload_models.
        map { |Modelo| "#{ruta}/#{modelo.guion_bajo}.rb" }.
        Seleccionar { |file_name| Archivo.¿existe?(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(/^#{path}\// , "").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 nombres de modelos, devuelve solo los archivos de esos modelos con nombre).

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`.



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

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=(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:

  • patrón (arreglo<String>)

    La lista de patrones glob



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 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 (string)

    El nombre del archivo base.



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

def load_model(Archivo)
  si ¿definido?(require_dependency)
    require_dependency(Archivo)
  else
    requieren(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:

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

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.



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

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

  archivo.sort.cada hacer |Archivo|
    load_model(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 se encuentren en ‘$LOAD_PATH`.

Devuelve:

  • (arreglo<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?(Tirantes) ?
    Tirantes.aplicación.config.paths["aplicación/models"].Ampliado :
    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 (arreglo<String>)

    Lista de rutas de modelos



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

def rutas_del_modelo=(paths)
  @model_paths = paths
end