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

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

Parâmetros:

  • caminho (string)

    o caminho para pesquisar

Retorna:

  • (Array<String>)

    os nomes dos arquivos normalizados, adequados para carregamento via require_dependency ou require.



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

Parâmetros:

  • caminhos (Array<String>)

    a lista de caminhos para pesquisar

Retorna:

  • (Array<String>)

    os nomes dos arquivos normalizados, adequados para carregamento via require_dependency ou require.



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_patternsArray<String>

Retorna a array de padrões global que determinam se um determinado caminho deve ser ignorado pelo carregador de modelo.

Retorna:

  • (Array<String>)

    a array de padrões ignorados



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.

Parâmetros:

  • Padrões (Array<String>)

    A lista de padrões global



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.

Parâmetros:

  • FILE_PATH (string)

    O caminho do arquivo a ser considerado

Retorna:

  • (verdadeiro | falso)

    se o caminho do arquivo fornecido deve ou não ser ignorado.



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.

Exemplos:

Carregue o modelo.

Mongoid.load_model("/mongoid/behavior")

Parâmetros:

  • file (string)

    O nome do arquivo base.



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.

Exemplos:

Carregue todos os modelos de aplicação a partir de caminhos de modelo padrão.

Mongoid.load_models

Carregue todos os modelos de aplicação de um conjunto não padrão de caminhos.

Mongoid.load_models(%w( ./models ./admin/models ))

Parâmetros:

  • caminhos (Array) (padrão para: model_paths)

    A lista de caminhos que devem ser procurados para arquivos de modelo. Devem ser caminhos absolutos ou relativos ao diretório de trabalho atual.



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.

Retorna:

  • (Array<String>)

    a array de caminhos do modelo



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'].Expandido
                   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.

Parâmetros:

  • caminhos (Array<String>)

    A lista de caminhos de modelo



123
124
125
# Arquivo 'lib/mongoid/loadable.rb', linha 123

def model_paths=(caminhos)
  @model_paths = caminhos
end