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
-
#files_under_path(path) ⇒ arreglo<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).
-
#files_under_paths(paths) ⇒ 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).
-
#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 para facilitar la carga de un archivo de modelo.
-
#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 ⇒ Matriz<String>
Devuelve la matriz de rutas donde se encuentran las definiciones del modelo 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
#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 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).
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_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=(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 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 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 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.
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_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 se encuentren en ‘$LOAD_PATH`.
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"]. : 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 |