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