Classe: Mongoid::PersistenceContext

Herda:
Objeto
  • Objeto
mostrar tudo
Estendido por:
Encaminhável
Definido em:
lib/mongoid/persistence_context.rb

Visão geral

Lógica de encapsulamento de objetos para definir/obter uma collection e nome de banco de dados de dados e um cliente com opções específicas a serem usadas ao persistir modelos.

Colapsode resumo constante

EXTRA_OPTIONS =

Opções extras, além das opções do cliente driver, que determinam o contexto de persistência.

Retorna:

  • (Array<Símbolo><Symbol>)

    A lista de opções extras além das opções do cliente que determinam o contexto de persistência.

[ :cliente,
  :collection,
  :collection_options
].congelar
VALID_OPTIONS =

A lista completa de opções válidas de contexto de persistência.

Retorna:

  • (Array<Símbolo><Symbol>)

    A lista completa de opções que definem o contexto de persistência.

( mongo::Cliente::VALID_OPTIONS + EXTRA_OPTIONS ).congelar

Recolhimento do Resumo do atributo de instância

Recolhimento do Resumo do método de classe

Recolhimento do Resumo do método de instância

Detalhes do construtor

#initialize(objeto, opts = {}) ➤ PersistenceContext

Inicialize o objeto de contexto de persistência.

Exemplos:

Crie um novo contexto de persistência.

PersistenceContext.new(model, collection: 'other')

Parâmetros:

  • objeto (Objeto)

    A classe ou instância de modelo para a qual um contexto de persistência deve ser criado.

  • opciona (Hash) (padrão para: {})

    As opções de contexto de persistência.



46
47
48
49
# File 'lib/mongoid/persistence_context.rb', linha 46

def inicializar(objeto, opciona = {})
  @ objeto = objeto
  set_options!(opciona)
end

Detalhes do atributo da instância

#opçõesHash (somente leitura)

As opções que definem este contexto de persistência.

Retorna:

  • (Hash)

    As opções de contexto de persistência.



20
21
22
# File 'lib/mongoid/persistence_context.rb', linha 20

def opções
  @opções
end

Detalhes do método de classe

.limpar(objeto, cluster = nil, original_context = nil) ➤ Objeto

Limpe o contexto de persistência de uma classe ou instância de modelo específica.

Exemplos:

Limpe o contexto de persistência de uma classe ou instância de modelo.

PersistenceContext.clear(model)

Parâmetros:

  • objeto (Classe | Objeto)

    A instância de classe ou modelo.

  • cluster (Mongo::Cluster) (padrão para: nil)

    O cluster original antes desse contexto ser usado.

  • original_context (Mongoid::PersistenceContext) (padrão para: nil)

    O contexto de persistência original que foi configurado antes deste contexto ser usado.



271
272
273
274
275
276
277
278
279
# File 'lib/mongoid/persistence_context.rb', linha 271

def Limpar(objeto, cluster = nada, original_context = nada)
  se Contexto = obter(objeto)
    a menos que cluster.nada? || Contexto.cluster.igual?(cluster)
      Contexto.Cliente.Fechar a menos que Contexto.reusable_client?
    end
  end
garantir
  store_context(objeto, original_context)
end

.get(objeto) ➤ Mongoid::PersistenceContext

Obtenha o contexto de persistência para uma classe específica ou instância de modelo.

Exemplos:

Obtenha o contexto de persistência para uma classe ou instância de modelo.

PersistenceContext.get(model)

Parâmetros:

  • objeto (Objeto)

    A instância de classe ou modelo.

Retorna:



258
259
260
# File 'lib/mongoid/persistence_context.rb', linha 258

def obter(objeto)
  get_context(objeto)
end

.set(object, options_or_context) ➤ Mongoid::PersistenceContext

Defina o contexto de persistência para uma classe ou instância de modelo específica.

Se já houver um conjunto de contextos de persistência, as opções no contexto existente serão combinadas com as opções fornecidas para a chamada do conjunto.

Exemplos:

Defina o contexto de persistência para uma classe ou instância de modelo.

PersistenceContext.set(model)

Parâmetros:

  • objeto (Objeto)

    A instância de classe ou modelo.

  • options_or_context (Hash | Mongoid::PersistenceContext)

    As opções de persistência ou um objeto de contexto de persistência.

Retorna:



235
236
237
238
239
240
241
242
243
244
245
246
247
248
# File 'lib/mongoid/persistence_context.rb', linha 235

def set(objeto, options_or_context)
  exists_context = get_context(objeto)
  exists_options = se exists_context
    exists_context.opções
  mais
    {}
  end
  se options_or_context.is_a?(PersistenceContext)
    options_or_context = options_or_context.opções
  end
  new_options = exists_options.mesclar(options_or_context)
  Contexto = PersistenceContext.Novo(objeto, new_options)
  store_context(objeto, Contexto)
end

Detalhes do método de instância

#==(outro) ➤ verdadeiro | false

Determine se esse contexto de persistência é igual a outro.

Exemplos:

Compare dois contextos de persistência.

context == other_context

Parâmetros:

  • Outro (Objeto)

    O objeto a ser comparado com este.

Retorna:

  • (verdadeiro | falso)

    Se os dois contextos de persistência são iguais.



154
155
156
157
# File 'lib/mongoid/persistence_context.rb', linha 154

def ==(Outro)
  Método false a menos que Outro.is_a?(PersistenceContext)
  opções == Outro.opções
end

#clienteMongo::Client

Obtenha o cliente para este contexto de persistência.

Exemplos:

Obtenha o cliente para este contexto de persistência.

context.client

Retorna:

  • (Mongo::Client)

    O cliente para este contexto de persistência.



117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
# File 'lib/mongoid/persistence_context.rb', linha 117

def Cliente
  @cliente ||= começar
    Cliente = Clientes.with_name(client_name)
    opções = client_options

    se database_name_option
      Cliente = Cliente.Usar(nome do banco de dados)
      opções = opções.exceto(:database, 'database')
    end

    Cliente = Cliente.com(opções) a menos que opções.vazio?

    Cliente
  end
end

#client_nameSymbol

Obtenha o nome do cliente para este contexto de persistência.

Exemplos:

Obtenha o nome do cliente para este contexto de persistência.

context.client_name

Retorna:

  • (Símbolo)

    O nome do cliente para este contexto de persistência.



140
141
142
143
144
# File 'lib/mongoid/persistence_context.rb', linha 140

def client_name
  @client_name ||= __evaluate__(opções[:cliente]) ||
                     Threaded.client_override ||
                     __evaluate__(storage_options[:cliente])
end

#collection(parent = nil) ➤ Mongo::Collection

Obtenha a coleção para este contexto de persistência.

Exemplos:

Obtenha a coleção para este contexto de persistência.

context.collection

Parâmetros:

  • principal (Objeto) (padrão para: nil)

    O objeto principal cujo nome de coleção é usado em vez do nome de coleção deste contexto de persistência.

Retorna:

  • (Mongo::Collection)

    A coleção para este contexto de persistência.



81
82
83
84
85
# File 'lib/mongoid/persistence_context.rb', linha 81

def collection(principal = nada)
  principal ?
    principal.collection.com(client_options.exceto(:database, "bancode dados")) :
    Cliente[collection_name.to_sym]
end

#collection_namestring

Obtenha o nome da coleção para este contexto de persistência.

Exemplos:

Obtenha o nome da coleção para este contexto de persistência.

context.collection_name

Retorna:

  • (string)

    O nome da coleção para este contexto de persistência.



94
95
96
97
# File 'lib/mongoid/persistence_context.rb', linha 94

def collection_name
  @collection_name ||= (__evaluate__(opções[:collection] ||
                         storage_options[:collection]))
end

#database_namestring

Obtenha o nome do banco de dados para este contexto de persistência.

Exemplos:

Obtenha o nome do banco de dados para este contexto de persistência.

context.database_name

Retorna:

  • (string)

    O nome do banco de dados de dados para este contexto de persistência.



106
107
108
# File 'lib/mongoid/persistence_context.rb', linha 106

def nome do banco de dados
  __evaluate__(database_name_option) || Cliente.database.name
end

#for_child(documento) ➤ PersistenceContext

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.

Retorna um novo contexto de persistência que é consistente com o documento secundário fornecido, herdando as configurações mais apropriadas.

Parâmetros:

Retorna:



59
60
61
62
63
64
65
66
67
68
69
# File 'lib/mongoid/persistence_context.rb', linha 59

def for_child(documento)
  se documento.is_a?(classe)
    Método auto se documento == (@ objeto.is_a?(classe) ? @ objeto : @ objeto.classe)
  elsif documento.is_a?(Mongoid::Documento)
    Método auto se documento.classe == (@ objeto.is_a?(classe) ? @ objeto : @ objeto.classe)
  mais
    aumentar ArgumentError, 'deve especificar uma classe ou uma instância de documento'
  end

  PersistenceContext.Novo(documento, opções.mesclar(documento.storage_options))
end

#ordered_storage_optionsHash | nada

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.

O subconjunto de opções fornecidas que podem ser usadas como opções de armazenamento.

Retorna:

  • (Hash | nulo)

    as opções de armazenamento solicitadas ou nulo se nenhuma for especificada.



181
182
183
184
# File 'lib/mongoid/persistence_context.rb', linha 181

def ordered_storage_options
  fatia = @opções.fatia(*Mongoid::Clientes::Validadores::Armazenamento::VALID_OPTIONS)
  fatia.algum? ? fatia : nada
end

#reusable_client?verdadeiro | false

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.

Se o cliente do contexto pode ser reutilizado posteriormente e, portanto, não deve ser fechado.

Se o contexto de persistência for solicitado apenas com a opção : cliente , isso significa que o contexto deve usar um cliente configurado em mongoid.yml. Esses clientes não devem ser fechados quando o contexto for limpo, pois serão reutilizados posteriormente.

Retorna:

  • (verdadeiro | falso)

    Verdadeiro se o cliente puder ser reutilizado; caso contrário, falso.



170
171
172
# File 'lib/mongoid/persistence_context.rb', linha 170

def reusable_client?
  @opções.keys == [:cliente]
end