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 modelo 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 modelos. O padrão é ' /models/concerns/ ', que o Rails usa para extensões para modelos (e que causamerros 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 modelo, retorna apenas os arquivos para esses modelos nomeados).

Parâmetros:

  • caminho (string)

    o caminho para pesquisar

Retorna:

  • (Array<String>)

    os nomes de arquivo normalizados, adequados para carregamento via 'require_dependency' ou 'require'.



63
64
65
66
67
68
69
70
71
72
73
74
75
# Arquivo 'lib/mongoid/loadable.rb', linha 63

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(/^#{path}\// , "").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 modelos, retorna apenas os arquivos para esses modelos nomeados).

Parâmetros:

  • caminhos (Array<String>)

    a lista de caminhos para pesquisar

Retorna:

  • (Array<String>)

    os nomes de arquivo normalizados, adequados para carregamento via 'require_dependency' ou 'require'.



51
52
53
# Arquivo 'lib/mongoid/loadable.rb', linha 51

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 modelo. Se o método 'require_dependency' do Rails existir, ele será usado; caso contrário, "exigir" será usado.

Exemplos:

Carregue o modelo.

Mongoid.load_model("/mongoid/behavior")

Parâmetros:

  • file (string)

    O nome do arquivo base.



87
88
89
90
91
92
93
# Arquivo 'lib/mongoid/loadable.rb', linha 87

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.



33
34
35
36
37
38
39
40
41
# Arquivo 'lib/mongoid/loadable.rb', linha 33

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 modelo do aplicativo estão localizadas. Se o Rails estiver carregado, o padrão será os caminhos "app/models" configurados (por exemplo ' config.paths'); caso contrário, o padrão será `%w(./app/models ./lib/models)'.

Observe que esses caminhos são as raizes das hierarquias de diretório onde os modelos 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



105
106
107
108
109
# Arquivo 'lib/mongoid/loadable.rb', linha 105

def model_paths
  @model_paths ||= definido?(Trilhos) ?
    Trilhos.Aplicativo.config.caminhos["app/models"].Expandido :
    DEFAULT_MODEL_PATHS
end

#model_paths=(caminhos) ➤ Objeto

Define os caminhos do modelo para a array de caminhos fornecida. Esses são os caminhos onde as definições de modelo 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