클래스: Mongoid::PersistenceContext

상속:
객체
  • 객체
모두 표시
확장자:
전달 가능
다음에 정의됨:
lib/mongoid/persistence_context.rb

개요

컬렉션 및 데이터베이스 이름과 모델을 유지할 때 사용할 특정 옵션이 있는 클라이언트 를 설정/가져오기 위한 객체 캡슐화 로직입니다.

상수 요약 접기

EXTRA_OPTIONS =

지속성 컨텍스트를 결정하는 운전자 클라이언트 옵션 외에 추가 옵션입니다.

반환합니다:

  • (Array<Symbol>)

    지속성 컨텍스트를 결정하는 클라이언트 옵션 외의 예비 옵션 목록입니다.

[ :client,
  :collection
].동결
VALID_OPTIONS =

유효한 지속성 컨텍스트 옵션의 전체 목록입니다.

반환합니다:

  • (Array<Symbol>)

    지속성 컨텍스트를 정의하는 옵션의 전체 목록입니다.

( mongo::고객::VALID_OPTIONS + EXTRA_OPTIONS ).동결

인스턴스 속성 요약 접기

클래스 메서드 요약 접기

인스턴스 메서드 요약 접기

생성자 세부 정보

#initialize(객체, opts = {}) ⇒ PersistenceContext

지속성 컨텍스트 객체를 초기화합니다.

예시:

새 지속성 컨텍스트를 만듭니다.

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

매개변수:

  • 객체 (객체)

    지속성 컨텍스트를 생성해야 하는 클래스 또는 모델 인스턴스입니다.

  • opts (해시) (기본값: {})

    지속성 컨텍스트 옵션입니다.



45
46
47
48
# 파일 'lib/mongoid/persistence_context.rb', 줄 45

def 초기화(객체, opts = {})
  @ 객체 = 객체
  set_options!(opts)
end

인스턴스 속성 세부 정보

#options해시 (읽기 전용)

이 지속성 컨텍스트를 정의하는 옵션입니다.

반환합니다:

  • (해시)

    지속성 컨텍스트 옵션입니다.



20
21
22
# 파일 'lib/mongoid/persistence_context.rb', 줄 20

def 옵션
  @options
end

클래스 메서드 세부 정보

.clear(객체, 클러스터 = nil, original_context = nil) ⇒ Object

특정 클래스 또는 모델 인스턴스에 대한 지속성 컨텍스트를 지웁니다.

예시:

클래스 또는 모델 인스턴스 에 대한 지속성 컨텍스트를 지웁니다.

PersistenceContext.clear(model)

매개변수:

  • 객체 (클래스 | 객체)

    클래스 또는 모델 인스턴스입니다.

  • cluster (Mongo::Cluster) (기본값: nil)

    이 컨텍스트가 사용되기 전의 원래 클러스터입니다.

  • original_context (Mongoid::PersistenceContext) (기본값: nil)

    이 컨텍스트 이전에 설정하다 원래 지속성 컨텍스트가 사용되었습니다.



267
268
269
270
271
272
273
274
275
# 파일 'lib/mongoid/persistence_context.rb', 줄 267

def 지우기(객체, cluster = nil, original_context = nil)
  만약 컨텍스트 = get(객체)
    하지 않는 한 cluster.nil? || 컨텍스트.cluster.같음?(cluster)
      컨텍스트.고객.닫기 하지 않는 한 컨텍스트.reusable_client?
    end
  end
보장
  store_context(객체, original_context)
end

.get(객체) ⇒ Mongoid::PersistenceContext

특정 클래스 또는 모델 인스턴스 에 대한 지속성 컨텍스트를 가져옵니다.

예시:

클래스 또는 모델 인스턴스 에 대한 지속성 컨텍스트를 가져옵니다.

PersistenceContext.get(model)

매개변수:

  • 객체 (객체)

    클래스 또는 모델 인스턴스입니다.

반환합니다:



254
255
256
# 파일 'lib/mongoid/persistence_context.rb', 줄 254

def get(객체)
  get_context(객체)
end

.set(객체, options_or_context) ⇒ Mongoid::PersistenceContext

특정 클래스 또는 모델 인스턴스에 대한 지속성 컨텍스트를 설정합니다.

지속성 컨텍스트 설정하다 가 이미 있는 경우 기존 컨텍스트의 옵션이 설정하다 호출에 지정된 옵션과 결합됩니다.

예시:

클래스 또는 모델 인스턴스 에 대한 지속성 컨텍스트를 설정합니다.

PersistenceContext.set(model)

매개변수:

  • 객체 (객체)

    클래스 또는 모델 인스턴스입니다.

  • options_or_context (해시 | Mongoid::PersistenceContext)

    지속성 옵션 또는 지속성 컨텍스트 객체입니다.

반환합니다:



231
232
233
234
235
236
237
238
239
240
241
242
243
244
# 파일 'lib/mongoid/persistence_context.rb', 줄 231

def 세트(객체, options_or_context)
  기존_컨텍스트 = get_context(객체)
  Existing_options = 만약 기존_컨텍스트
    기존_컨텍스트.옵션
  other
    {}
  end
  만약 options_or_context.is_a?(PersistenceContext)
    options_or_context = options_or_context.옵션
  end
  new_options = Existing_options.merge(options_or_context)
  컨텍스트 = PersistenceContext.신규(객체, new_options)
  store_context(객체, 컨텍스트)
end

인스턴스 메서드 세부 정보

#==(기타) ⇒ true | false

이 지속성 컨텍스트가 다른 지속성 컨텍스트와 동일한지 확인합니다.

예시:

두 지속성 컨텍스트를 비교합니다.

context == other_context

매개변수:

  • 기타 (객체)

    이 객체 와 비교할 객체입니다.

반환합니다:

  • (true | false)

    두 지속성 컨텍스트가 동일한지 여부입니다.



150
151
152
153
# 파일 'lib/mongoid/persistence_context.rb', 줄 150

def ==(기타)
  반환 거짓 하지 않는 한 기타.is_a?(PersistenceContext)
  옵션 == 기타.옵션
end

#클라이언트Mongo::Client

이 지속성 컨텍스트에 대한 클라이언트 를 가져옵니다.

예시:

이 지속성 컨텍스트에 대한 클라이언트 를 가져옵니다.

context.client

반환합니다:

  • (Mongo::Client)

    이 지속성 컨텍스트의 클라이언트 입니다.



116
117
118
119
120
121
122
123
124
125
126
127
# 파일 'lib/mongoid/persistence_context.rb', 줄 116

def 고객
  @client ||= 시작
    고객 = 클라이언트.with_name(client_name)
    만약 database_name_option
      고객 = 고객.메서드를(database_name)
    end
    하지 않는 한 client_options.비어 있나요?
      고객 = 고객.(client_options)
    end
    고객
  end
end

#client_nameSymbol

이 지속성 컨텍스트에 대한 클라이언트 이름을 가져옵니다.

예시:

이 지속성 컨텍스트에 대한 클라이언트 이름을 가져옵니다.

context.client_name

반환합니다:

  • (기호)

    이 지속성 컨텍스트의 클라이언트 이름입니다.



136
137
138
139
140
# 파일 'lib/mongoid/persistence_context.rb', 줄 136

def client_name
  @client_name ||= 옵션[:client] ||
                     스레드.client_override ||
                     __evaluate__(storage_options[:client])
end

#컬렉션(parent = nil) ⇒ Mongo::Collection

이 지속성 컨텍스트에 대한 컬렉션 을 가져옵니다.

예시:

이 지속성 컨텍스트에 대한 컬렉션 을 가져옵니다.

context.collection

매개변수:

  • 부모 (객체) (기본값: nil)

    이 지속성 컨텍스트의 컬렉션 이름 대신 컬렉션 이름이 사용되는 상위 객체 입니다.

반환합니다:

  • (Mongo::Collection)

    이 지속성 컨텍스트에 대한 컬렉션입니다.



80
81
82
83
84
# 파일 'lib/mongoid/persistence_context.rb', 줄 80

def 컬렉션(부모 = nil)
  부모 ?
    부모.컬렉션.(client_options.~을 제외하고(:database, "database")) :
    고객[collection_name.to_sym]
end

#collection_namestring

이 지속성 컨텍스트에 대한 컬렉션 이름을 가져옵니다.

예시:

이 지속성 컨텍스트에 대한 컬렉션 이름을 가져옵니다.

context.collection_name

반환합니다:

  • (string)

    이 지속성 컨텍스트의 컬렉션 이름입니다.



93
94
95
96
# 파일 'lib/mongoid/persistence_context.rb', 줄 93

def collection_name
  @collection_name ||= (__evaluate__(옵션[:collection] ||
                         storage_options[:collection]))
end

#database_namestring

이 지속성 컨텍스트의 데이터베이스 이름을 가져옵니다.

예시:

이 지속성 컨텍스트의 데이터베이스 이름을 가져옵니다.

context.database_name

반환합니다:

  • (string)

    이 지속성 컨텍스트의 데이터베이스 이름입니다.



105
106
107
# 파일 'lib/mongoid/persistence_context.rb', 줄 105

def database_name
  __evaluate__(database_name_option) || 고객.database.이름
end

#for_child(문서) ⇒ PersistenceContext

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

가장 적절한 설정을 상속하여 지정된 하위 문서 와 일관적인 하는 새 지속성 컨텍스트를 반환합니다.

매개변수:

반환합니다:



58
59
60
61
62
63
64
65
66
67
68
# 파일 'lib/mongoid/persistence_context.rb', 줄 58

def for_child(문서)
  만약 문서.is_a?(클래스)
    반환 self 만약 문서 == (@ 객체.is_a?(클래스) ? @ 객체 : @ 객체.클래스)
  elsif 문서.is_a?(몽고이드::문서)
    반환 self 만약 문서.클래스 == (@ 객체.is_a?(클래스) ? @ 객체 : @ 객체.클래스)
  other
    올리다 ArgumentError, '반드시 클래스 또는 문서 인스턴스 를 지정해야 합니다.'
  end

  PersistenceContext.신규(문서, 옵션.merge(문서.storage_options))
end

#requests_storage_options해시 | nil

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

저장 옵션으로 사용할 수 있는 제공된 옵션의 하위 집합입니다.

반환합니다:

  • (Hash | nil)

    요청된 저장 옵션을 지정하거나, 지정되지 않은 경우 nil을 지정합니다.



177
178
179
180
# 파일 'lib/mongoid/persistence_context.rb', 줄 177

def requests_storage_options
  슬라이스 = @options.슬라이스(*몽고이드::클라이언트::유효성 검사기::스토리지::VALID_OPTIONS)
  슬라이스.어떤? ? 슬라이스 : nil
end

#reusable_client?true | false

이 메서드는 비공개 API의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

컨텍스트의 클라이언트 가 나중에 재사용될 수 있으므로 닫지 않아야 하는지 여부입니다.

클라이언트 옵션만 사용하여 지속성 컨텍스트를 요청하는 경우, 해당 컨텍스트는 mongoid.yml에 구성된 클라이언트 를 사용해야 함을 의미합니다. 이러한 클라이언트는 나중에 재사용되므로 컨텍스트가 지워질 때 닫지 않아야 합니다.

반환합니다:

  • (true | false)

    클라이언트 를 재사용할 수 있으면 true이고, 그렇지 않으면 false입니다.



166
167
168
# 파일 'lib/mongoid/persistence_context.rb', 줄 166

def reusable_client?
  @options. == [:client]
end