Módulo: Mongoid::Loadable
- Incluído em:
- Mongoid
- Definido em:
- lib/mongoid/loadable.rb
Visão geral
Define como o Mongoid pode carregar automaticamente todos os modelos definidos.
Colapsode resumo constante
- DEFAULT_MODEL_PATHS =
A lista padrão de caminhos onde as classes de model devem ser procuradas. Se o Rails estiver presente, os caminhos "app/models" serão usados. (Consulte #model_paths.)
%w[ ./app/models ./lib/models ].congelar
- DEFAULT_IGNORE_PATTERNS =
A lista padrão de padrões glob que correspondem a caminhos a serem ignorados ao carregar model. O padrão é '/models/concerns/', que o Rails usa para extensões para model (e que causam erros quando carregados fora de ordem).
Consulte #ignore_patterns.
%w[ */models/concerns/* ].congelar
Recolhimento do Resumo do método de instância
-
#arquivos_sob_path(path) ➤ Array<String>
Dado um único caminho, retorna todos os arquivos Ruby nesse caminho (ou, se
preload_modelsfor uma lista de nomes de model, retorna apenas os arquivos para esses models nomeados). -
#Files_Under_paths(Caminhos) ➤ Array<String>
Dada uma lista de caminhos, retorna todos os arquivos Ruby nesse caminho (ou, se
preload_modelsfor uma lista de nomes de model, retorna apenas os arquivos para esses models nomeados). -
#ignore_patterns ⇒ Array<String>
Retorna a array de padrões global que determinam se um determinado caminho deve ser ignorado pelo carregador de modelo.
-
#ignore_patterns=(patterns) ➤ Object
Define os padrões ignorados para a array de padrões fornecida.
-
#ignorado?(file_path) ➤ true | false
Retorna verdadeiro se o caminho de arquivo fornecido corresponder a qualquer um dos padrões de ignorar.
-
#load_model(file) ➤ Objeto
privado
Um método de conveniência para carregar o arquivo de um model.
-
#load_models(paths = model_paths) ➤ Objeto
Pesquise uma lista de caminhos de modelo para obter cada modelo e exigi-lo, para que a indexação e a herança funcionem no desenvolvimento e na produção com os mesmos resultados.
-
#model_paths ➤ Array<String>
Retorna a array de caminhos onde as definições de model do aplicativo estão localizadas.
-
#model_paths=(caminhos) ➤ Objeto
Define os caminhos do modelo para a array de caminhos fornecida.
Detalhes do método de instância
#arquivos_sob_path(path) ➤ Array<String>
Dado um único caminho, retorna todos os arquivos Ruby nesse caminho (ou, se preload_models for uma lista de nomes de model, retorna apenas os arquivos para esses models nomeados).
61 62 63 64 65 66 67 68 69 70 71 72 73 |
# Arquivo 'lib/mongoid/loadable.rb', linha 61 def Files_Under_path(caminho) .idl = se preload_models.redimensionável? preload_models .map { |Modelo| "#{caminho}/#{modelo.sublinhado}.rb" } .selecione { |file_name| arquivo.existe?(file_name) } mais Gerente.global("#{caminho}/**/*.rb") .rejeitar { |file_name| ignorado?(file_name) } end # remover o caminho e o sufixo de cada entrada .idl.map { |file| file.gsub(%r{^#{caminho}/}, '').gsub(/\.rb$/, '') } end |
#Files_Under_paths(Caminhos) ➤ Array<String>
Dada uma lista de caminhos, retorna todos os arquivos Ruby nesse caminho (ou, se preload_models for uma lista de nomes de model, retorna apenas os arquivos para esses models nomeados).
49 50 51 |
# Arquivo 'lib/mongoid/loadable.rb', linha 49 def arquivos_sob_paths(caminhos) caminhos.flat_map { |caminho| Files_Under_path(caminho) } end |
#ignore_patterns ⇒ Array<String>
Retorna a array de padrões global que determinam se um determinado caminho deve ser ignorado pelo carregador de modelo.
115 116 117 |
# Arquivo 'lib/mongoid/loadable.rb', linha 115 def ignore_patterns @ignore_patterns ||= DEFAULT_IGNORE_PATTERNS.dup end |
#ignore_patterns=(patterns) ➤ Object
Define os padrões ignorados para a array de padrões fornecida. Esses são padrões global que determinam se um determinado caminho deve ser ignorado pelo carregador de modelo ou não.
132 133 134 |
# Arquivo 'lib/mongoid/loadable.rb', linha 132 def ignore_patterns=(Padrões) @ignore_patterns = Padrões end |
#ignorado?(file_path) ➤ true | false
Retorna verdadeiro se o caminho de arquivo fornecido corresponder a qualquer um dos padrões de ignorar.
142 143 144 |
# Arquivo 'lib/mongoid/loadable.rb', linha 142 def ignorado?(FILE_PATH) ignore_patterns.algum? { |padrão| arquivo.fnmatch?(padrão, FILE_PATH) } end |
#load_model(file) ➤ Objeto
Este método faz parte de uma API privada. Evite usar esse método, se possível, pois ele pode ser removido ou alterado no futuro.
Um método de conveniência para carregar o arquivo de um model. Se o método require_dependency do Rails existir, ele será usado; caso contrário, require será usado.
85 86 87 88 89 90 91 |
# Arquivo 'lib/mongoid/loadable.rb', linha 85 def load_model(file) se definido?(require_dependency) require_dependency(file) mais exigir(file) end end |
#load_models(paths = model_paths) ➤ Objeto
Pesquise uma lista de caminhos de modelo para obter cada modelo e exigi-lo, para que a indexação e a herança funcionem no desenvolvimento e na produção com os mesmos resultados.
31 32 33 34 35 36 37 38 39 |
# Arquivo 'lib/mongoid/loadable.rb', linha 31 def load_models(caminhos = model_paths) .idl = arquivos_sob_paths(caminhos) .idl.sort.cada fazer |file| load_model(file) end nada end |
#model_paths ➤ Array<String>
Retorna a array de caminhos onde as definições de model do aplicativo estão localizadas. Se o Rails estiver carregado, o padrão é os caminhos "aplicativo/model" configurados (por exemplo config.paths["app/models"]); caso contrário, o padrão será '%w(./aplicativo/model ./lib/model)'.
Observe que esses caminhos são as raizes das hierarquias de diretório onde os model estão localizados; não é necessário indicar todos os subdiretórios, desde que esses caminhos raiz estejam localizados em $LOAD_PATH.
103 104 105 106 107 108 109 |
# Arquivo 'lib/mongoid/loadable.rb', linha 103 def model_paths @model_paths ||= se definido?(Trilhos) Trilhos.Aplicativo.config.caminhos['app/models']. mais DEFAULT_MODEL_PATHS end end |
#model_paths=(caminhos) ➤ Objeto
Define os caminhos do model para a array de caminhos fornecida. Esses são os caminhos onde as definições de model do aplicativo estão localizadas.
123 124 125 |
# Arquivo 'lib/mongoid/loadable.rb', linha 123 def model_paths=(caminhos) @model_paths = caminhos end |