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
-
#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).
-
#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).
-
#ignore_patterns ⇒ Array<String>
Devuelve la matriz de patrones glob que determinan si el cargador de modelos debe ignorar una ruta determinada.
-
#ignore_patterns=(patterns) ⇒ Objeto
Establece los patrones ignorados en la matriz de patrones dada.
-
#¿ignorado?(ruta_del_archivo) ⇒ verdadero | falso
Devuelve verdadero si la ruta de archivo dada coincide con alguno de los patrones de ignoración.
-
#load_model(archivo) ⇒ Objeto
privada
Un método conveniente para cargar el archivo de un modelo.
-
#load_models(rutas = rutas_del_modelo) ⇒ 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.
-
#model_paths ⇒ Matriz<String>
Devuelve la matriz de rutas donde se encuentran las definiciones del modelo de la aplicación.
-
#model_paths=(rutas) ⇒ Objeto
Establece las rutas del modelo en la matriz de rutas dada.
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).
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).
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_patterns ⇒ Array<String>
Devuelve la matriz de patrones glob que determinan si el cargador de modelos debe ignorar una ruta determinada.
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.
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.
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`.
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.
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_paths ⇒ Matriz<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`.
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"]. : 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.
123 124 125 |
# Archivo 'lib/mongoid/loadable.rb', línea 123 def rutas_del_modelo=(paths) @model_paths = paths end |