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

[View source]

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

[View source]

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

[View source]

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

[View source]

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.

[View source]

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.

[View source]

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.

[View source]

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

[View source]

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

[View source]

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

def model_paths=(caminhos)
  @model_paths = caminhos
end