模块:Mongoid::Loadable
- 包含在:
- Mongoid
- 定义于:
- lib/mongoid/loadable.rb
Overview
定义 Mongoid 如何自动加载所有定义的模型。
常量摘要折叠
- DEFAULT_MODEL_PATHS =
应在其中查找模型类的默认路径列表。 如果存在 Rails,则会使用“应用/models”路径。 (请参阅#model_paths。)
%w( ./app/models ./lib/models ).冻结
- DEFAULT_IGNORE_PATTERNS =
加载模型时要忽略的匹配路径的默认通配符模式列表。 默认为 ' /models/concerns/ ',Rails 将其用于模型扩展(无序加载时会导致错误)。
请参阅#ignore_patterns。
%w( */models/concerns/* ).冻结
实例方法摘要折叠
-
# files_under_path (path) ⇒ Array<String>
给定单个路径,返回该路径下的所有 Ruby 文件(或者,如果“preload_models”是模型名称列表,则仅返回这些命名模型的文件)。
-
# files_under_paths (paths) ⇒ Array<String>
给定路径列表,返回该路径下的所有 Ruby 文件(或者,如果 'preload_models` 是模型名称列表,则仅返回这些命名模型的文件)。
-
#ignore_patterns ⇒ Array<String>
返回通配符模式大量,用于确定模型加载器是否应忽略给定路径。
-
#ignore_patterns= (patterns) ⇒ 对象
将忽略模式设置为给定的模式大量。
-
# 忽略? (file_path) ⇒ true | false
如果给定文件路径与任何忽略模式匹配,则返回 true。
-
# load_model (文件) ⇒ 对象
private
一种加载模型文件的便捷方法。
-
# load_models (paths = model_paths) ⇒ 对象
搜索模型路径列表以获取每个模型并引用它,以便索引和继承在开发和生产中都能发挥作用,并获得相同的结果。
-
# model_paths ⇒ Array<String>
返回应用程序的模型定义所在路径的大量。
-
# model_paths= (paths) ⇒ 对象
将模型路径设置为给定的路径大量。
实例方法详细信息
# files_under_path (path) ⇒ Array<String>
给定单个路径,返回该路径下的所有 Ruby 文件(或者,如果“preload_models”是模型名称列表,则仅返回这些命名模型的文件)。
63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/mongoid/loadable.rb', 第63行 def files_under_path(路径) 的知识 = if preload_models.可调整大小? preload_models. map { |模型| " #{ path } / #{ model . underscore } .rb " }. SELECT { |file_name| file.存在吗?(file_name) } else 目录.glob(" #{ path } /**/*.rb "). 拒绝 { |file_name| 忽略?(file_name) } end # 从每个条目中去掉路径和后缀 的知识.map { |文件| 文件.gsub(/^#{path}\// , " ").gsub(/\.rb$/, " ") } end |
# files_under_paths (paths) ⇒ Array<String>
给定路径列表,返回该路径下的所有 Ruby 文件(或者,如果 'preload_models` 是模型名称列表,则仅返回这些命名模型的文件)。
51 52 53 |
# File 'lib/mongoid/loadable.rb', 第51行 def files_under_paths(paths) paths.flat_map { |路径| files_under_path(路径) } end |
#ignore_patterns ⇒ Array<String>
返回通配符模式大量,用于确定模型加载器是否应忽略给定路径。
115 116 117 |
# File 'lib/mongoid/loadable.rb', 第115行 def ignore_patterns @ignore_patterns ||= DEFAULT_IGNORE_PATTERNS.dup end |
#ignore_patterns= (patterns) ⇒ 对象
将忽略模式设置为给定的模式大量。 这些通配符模式可确定模型加载器是否应忽略给定路径。
132 133 134 |
# File 'lib/mongoid/loadable.rb', 第132行 def ignore_patterns=(模式) @ignore_patterns = 模式 end |
# 忽略? (file_path) ⇒ true | false
如果给定文件路径与任何忽略模式匹配,则返回 true。
142 143 144 |
# File 'lib/mongoid/loadable.rb', 第142行 def 忽略?(FILE_PATH) ignore_patterns.任何? { |模式| file.fnmatch?(模式, FILE_PATH) } end |
# load_model (文件) ⇒对象
此方法是私有 API 的一部分。 您应尽可能避免使用此方法,因为它将来可能会被删除或更改。
一种加载模型文件的便捷方法。 如果 Rails 的 'require_dependency' 方法存在,则会使用该方法;否则将使用“require”。
87 88 89 90 91 92 93 |
# File 'lib/mongoid/loadable.rb', 第87行 def load_model(文件) if 定义?(require_dependency) require_dependency(文件) else require(文件) end end |
# load_models (paths = model_paths) ⇒对象
搜索模型路径列表以获取每个模型并引用它,以便索引和继承在开发和生产中都能发挥作用,并获得相同的结果。
33 34 35 36 37 38 39 40 41 |
# File 'lib/mongoid/loadable.rb', 第33行 def load_models(paths = model_paths) 的知识 = files_under_paths(paths) 的知识.sort.每 do |文件| load_model(文件) end nil end |
# model_paths ⇒ Array<String>
返回应用程序的模型定义所在路径的大量。 如果 Rails 已加载,则默认为配置的“应用/models”路径(例如 ' config.paths `); 否则,默认为“%w(./ 应用/models ./lib/models)”。
请注意,这些路径是模型所在目录层次结构的根;不必指明每个子目录,只要这些根路径位于 '$LOAD_PATH` 中即可。
105 106 107 108 109 |
# File 'lib/mongoid/loadable.rb', 第105行 def model_paths @model_paths ||= 定义?(Rails) ? Rails.应用程序.config.paths[" 应用/models "]. : DEFAULT_MODEL_PATHS end |
# model_paths= (paths) ⇒对象
将模型路径设置为给定的路径大量。 这些是应用程序的模型定义所在的路径。
123 124 125 |
# File 'lib/mongoid/loadable.rb', 第123行 def model_paths=(paths) @model_paths = paths end |