클래스: Mongoid::PersistenceContext

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

개요

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

상수 요약 접기

EXTRA_OPTIONS =

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

반환합니다:

  • (Array<Symbol>)

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

%i[고객
컬렉션
collection_options].동결
VALID_OPTIONS =

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

반환합니다:

  • (Array<Symbol>)

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

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

인스턴스 속성 요약 접기

클래스 메서드 요약 접기

인스턴스 메서드 요약 접기

생성자 세부 정보

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

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

예시:

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

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

매개변수:

  • 객체 (객체)

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

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

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



43
44
45
46
# 파일 'lib/mongoid/persistence_context.rb', 줄 43

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

인스턴스 속성 세부 정보

#options해시 (읽기 전용)

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

반환합니다:

  • (해시)

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



18
19
20
# 파일 'lib/mongoid/persistence_context.rb', 줄 18

def 옵션
  @options
end

클래스 메서드 세부 정보

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

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

예시:

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

PersistenceContext.clear(model)

매개변수:

  • 객체 (클래스 | 객체)

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

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

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

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

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



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

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

.get(객체) ⇒ Mongoid::PersistenceContext

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

예시:

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

PersistenceContext.get(model)

매개변수:

  • 객체 (객체)

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

반환합니다:



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

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

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

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

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

예시:

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

PersistenceContext.set(model)

매개변수:

  • 객체 (객체)

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

  • options_or_context (해시 | Mongoid::PersistenceContext)

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

반환합니다:



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

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

인스턴스 메서드 세부 정보

#==(기타) ⇒ true | false

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

예시:

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

context == other_context

매개변수:

  • 기타 (객체)

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

반환합니다:

  • (true | false)

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



153
154
155
156
157
# 파일 'lib/mongoid/persistence_context.rb', 줄 153

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

  옵션 == 기타.옵션
end

#클라이언트Mongo::Client

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

예시:

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

context.client

반환합니다:

  • (Mongo::Client)

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



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

def 고객
  @client ||= 시작
    고객 = 클라이언트.with_name(client_name)
    옵션 = client_options

    만약 database_name_option
      고객 = 고객.메서드를(database_name)
      옵션 = 옵션.~을 제외하고(:database, 'database')
    end

    고객 = 고객.(옵션) 하지 않는 한 옵션.비어 있나요?

    고객
  end
end

#client_nameSymbol

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

예시:

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

context.client_name

반환합니다:

  • (기호)

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



139
140
141
142
143
# 파일 'lib/mongoid/persistence_context.rb', 줄 139

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

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

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

예시:

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

context.collection

매개변수:

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

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

반환합니다:

  • (Mongo::Collection)

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



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

def 컬렉션(부모 = nil)
  만약 부모
    부모.컬렉션.(client_options.~을 제외하고(:database, 'database'))
  other
    고객[collection_name.to_sym]
  end
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의 일부입니다. 이 방법은 향후 제거되거나 변경될 수 있으므로 가능하면 사용하지 않는 것이 좋습니다.

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

매개변수:

반환합니다:



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

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을 지정합니다.



181
182
183
184
# 파일 'lib/mongoid/persistence_context.rb', 줄 181

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

#reusable_client?true | false

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

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

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

반환합니다:

  • (true | false)

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



170
171
172
# 파일 'lib/mongoid/persistence_context.rb', 줄 170

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