모듈: Mongoid::Loadable

포함 항목:
몽고이드
다음에 정의됨:
lib/mongoid/loadable.rb

개요

Mongoid가 정의된 모든 모델을 자동으로 로드하는 방법을 정의합니다.

상수 요약 접기

DEFAULT_Model_PATHS =

모델 클래스를 찾아야 하는 기본값 경로 목록입니다. Rails가 있는 경우 ' 앱/models' 경로가 대신 사용됩니다. (#model_paths 참조).

%w( ./app/models ./lib/models ).동결
DEFAULT_IGNORE_PATTERNS =

모델을 로드할 때 무시할 경로와 일치하는 glob 패턴의 기본값 목록입니다. 기본값은' /models/concerns/'이며, Rails가 모델 확장에 사용하며 순서가 맞지 않으면 오류가 발생합니다.

#ignore_patterns를 참조하세요.

%w( */models/concerns/* ).동결

인스턴스 메서드 요약 접기

인스턴스 메서드 세부 정보

#files_under_path(경로)Array<String>

단일 경로가 주어지면 해당 경로 아래의 모든 Ruby 파일을 반환합니다(또는 'preload_models'가 모델 이름 목록인 경우 명명된 모델에 대한 파일만 반환).

매개변수:

  • 경로 (string)

    검색 경로

반환합니다:

  • (Array<String>)

    정규화된 파일 이름으로, 'require_dependency' 또는 'require'를 통해 로드하기에 적합합니다.

[소스 보기]

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

def files_under_path(경로)
  SCons를 훈련 = 만약 preload_models.크기 조정 가능?
      preload_models.
        map { |모델| "#{경로}/#{모델.밑줄}.rb" }.
        SELECT { |file_name| file.존재합니까?(file_name) }
    other
      디렉토리.glob("#{경로}/**/*.rb").
        거부 { |file_name| 무시됨?(file_name) }
    end

  # 각 항목에서 경로와 접미사를 제거합니다.
  SCons를 훈련.map { |파일| 파일.gsub(/^#{path}\// , "").gsub(/\.rb$/, "") }
end

#files_under_paths(paths) ⇒ Array<String>

경로 목록이 주어지면 해당 경로 아래의 모든 Ruby 파일을 반환합니다(또는 'preload_models'가 모델 이름 목록인 경우 명명된 모델에 대한 파일만 반환).

매개변수:

  • 경로 (Array<String>)

    검색 할 경로 목록

반환합니다:

  • (Array<String>)

    정규화된 파일 이름으로, 'require_dependency' 또는 'require'를 통해 로드하기에 적합합니다.

[소스 보기]

51
52
53
# 파일 'lib/mongoid/loadable.rb', 51줄

def files_under_paths(경로)
  경로.flat_map { |경로| files_under_path(경로) }
end

#ignore_patternsArray<String>

모델 로더에서 지정된 경로를 무시할지 여부를 결정하는 glob 패턴 배열 을 반환합니다.

반환합니다:

  • (Array<String>)

    무시 패턴 배열

[소스 보기]

115
116
117
# 파일 'lib/mongoid/loadable.rb', 115줄

def ignore_patterns
  @ignore_patterns ||= DEFAULT_IGNORE_PATTERNS.dup
end

#ignore_patterns=(patterns) ⇒ 객체

무시 패턴을 지정된 패턴 배열 로 설정합니다. 이는 모델 로더에서 지정된 경로를 무시할지 여부를 결정하는 glob 패턴입니다.

매개변수:

  • 패턴 (Array<String>)

    glob 패턴 목록

[소스 보기]

132
133
134
# 파일 'lib/mongoid/loadable.rb', 132줄

def ignore_patterns=(패턴)
  @ignore_patterns = 패턴
end

#무시되었나요?(file_path) ⇒ true | false

지정된 파일 경로가 무시 패턴과 일치하는 경우 true를 반환합니다.

매개변수:

  • FILE_PATH (string)

    고려해야 할 파일 경로

반환합니다:

  • (true | false)

    지정된 파일 경로를 무시할지 여부입니다.

[소스 보기]

142
143
144
# 파일 'lib/mongoid/loadable.rb', 142줄

def 무시됨?(FILE_PATH)
  ignore_patterns.어떤? { |패턴| file.fnmatch?(패턴, FILE_PATH) }
end

#load_model(파일) ⇒ 객체

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

모델의 파일 을 로드하기 위한 편리한 메서드입니다. Rails의 'require_dependency' 메서드가 존재하는 경우 해당 메서드가 사용됩니다. 그렇지 않으면 'require'가 사용됩니다.

예시:

모델을 로드합니다.

Mongoid.load_model("/mongoid/behavior")

매개변수:

  • 파일 (string)

    기본 파일 이름입니다.

[소스 보기]

87
88
89
90
91
92
93
# 파일 'lib/mongoid/loadable.rb', 87줄

def load_model(파일)
  만약 정의됨?(require_dependency)
    require_dependency(파일)
  other
    require(파일)
  end
end

#load_models(paths = 모델_경로) ⇒ 객체

모델 경로 목록을 검색하여 모든 모델을 가져와서 요구하면 개발과 프로덕션 모두에서 인덱싱 과 상속이 동일한 결과를 얻도록 할 수 있습니다.

예시:

기본값 모델 경로에서 모든 애플리케이션 모델을 로드합니다.

Mongoid.load_models

비표준 경로 설정하다 에서 모든 애플리케이션 모델을 로드합니다.

Mongoid.load_models(%w( ./models ./admin/models ))

매개변수:

  • 경로 (배열) (기본값: 모델_경로)

    모델 파일을 검색해야 하는 경로 목록입니다. 이 경로는 절대 경로이거나 현재 작업 디렉토리 에 대한 상대 경로여야 합니다.

[소스 보기]

33
34
35
36
37
38
39
40
41
# 파일 'lib/mongoid/loadable.rb', 33줄

def load_models(경로 = 모델 경로)
  SCons를 훈련 = files_under_paths(경로)

  SCons를 훈련.sort. do |파일|
    load_model(파일)
  end

  nil
end

#모델 경로Array<String>

애플리케이션의 모델 정의가 있는 경로 배열 반환합니다. Rails가 로드되면 기본적으로 구성된 '앱/models' 경로(예: 'config.paths')가 사용됩니다. 그렇지 않으면 기본값은 '%w(./앱/models ./lib/models)'입니다.

이러한 경로는 모델이 있는 디렉토리 계층 구조의 루트 입니다. 이러한 루트 경로가 '$LOAD_PATH`에 있는 한 모든 하위 디렉토리를 표시할 필요는 없습니다.

반환합니다:

  • (Array<String>)

    모델 경로 배열

[소스 보기]

105
106
107
108
109
# 파일 'lib/mongoid/loadable.rb', 105줄

def 모델 경로
  @model_paths ||= 정의됨?(Rails) ?
    Rails.애플리케이션.config.경로["앱/models"].확장 :
    DEFAULT_Model_PATHS
end

# 모델_경로=(경로) ⇒ 객체

모델 경로를 지정된 경로 배열 로 설정합니다. 이는 애플리케이션의 모델 정의가 있는 경로입니다.

매개변수:

  • 경로 (Array<String>)

    모델 경로 목록

[소스 보기]

123
124
125
# 파일 'lib/mongoid/loadable.rb', 123줄

def 모델 경로=(경로)
  @model_paths = 경로
end