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
-
#files_under_path(path) ⇒ arreglo<String>
Dado un solo directorio, devuelve todos los archivos Ruby debajo de ese directorio (o, si
preload_modelses una lista de nombres de model, devuelve solo los archivos para esos model nombrados). -
#files_under_paths(paths) ⇒ arreglo<String>
Dada una lista de rutas, devuelve todos los archivos Ruby bajo esa ruta (o, si
preload_modelses una lista de model names, devuelve solo los archivos de esos named models). -
#ignore_patterns ⇒ Array<String>
Devuelve el arreglo de patrones glob que determinan si el cargador del modelo debe ignorar una ruta determinada.
-
#ignore_patterns=(patterns) ⇒ Objeto
Establece los patrones de exclusión en el arreglo dado de patrones.
-
#¿ignorados?(file_path) ⇒ verdadero | falso
Devuelve true si la ruta de archivo dada coincide con alguno de los patrones de ignorar.
-
#load_model(archivo) ⇒ Objeto
privado
Un método conveniente para cargar el archivo de un model.
-
#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.
-
#model_paths ⇒ Array<String>
Devuelve el arreglo de rutas donde se encuentran las definiciones del model de la aplicación.
-
#model_paths=(paths) ⇒ Objeto
Establece las rutas del modelo en el arreglo de rutas proporcionado.
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).
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).
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_patterns ⇒ Array<String>
Devuelve el arreglo de patrones glob que determinan si el cargador del modelo debe ignorar una ruta determinada.
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.
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.
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.
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.
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_paths ⇒ Array<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.
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']. 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.
123 124 125 |
# Archivo 'lib/mongoid/loadable.rb', línea 123 def model_paths=(paths) @model_paths = paths end |