Module: Mongoid::Loadable
- Included in:
- Mongoid
- Defined in:
- lib/mongoid/loadable.rb
Overview
Defines how Mongoid can autoload all defined models.
Constant Summary collapse
- DEFAULT_MODEL_PATHS =
The default list of paths where model classes should be looked for. If Rails is present, the “app/models” paths will be used instead. (See #model_paths.)
%w( ./app/models ./lib/models ).freeze
Instance Method Summary collapse
-
#load_model(file) ⇒ Object
private
A convenience method for loading a model’s file.
-
#load_models(paths = model_paths) ⇒ Object
Search a list of model paths to get every model and require it, so that indexing and inheritance work in both development and production with the same results.
-
#model_paths ⇒ Array<String>
Returns the array of paths where the application’s model definitions are located.
-
#model_paths=(paths) ⇒ Object
Sets the model paths to the given array of paths.
Instance Method Details
#load_model(file) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
A convenience method for loading a model’s file. If Rails’ ‘require_dependency` method exists, it will be used; otherwise `require` will be used.
50 51 52 53 54 55 56 |
# File 'lib/mongoid/loadable.rb', line 50 def load_model(file) if defined?(require_dependency) require_dependency(file) else require(file) end end |
#load_models(paths = model_paths) ⇒ Object
Search a list of model paths to get every model and require it, so that indexing and inheritance work in both development and production with the same results.
26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/mongoid/loadable.rb', line 26 def load_models(paths = model_paths) paths.each do |path| if preload_models.resizable? files = preload_models.map { |model| "#{path}/#{model.underscore}.rb" } else files = Dir.glob("#{path}/**/*.rb") end files.sort.each do |file| load_model(file.gsub(/^#{path}\// , "").gsub(/\.rb$/, "")) end end end |
#model_paths ⇒ Array<String>
Returns the array of paths where the application’s model definitions are located. If Rails is loaded, this defaults to the configured “app/models” paths (e.g. ‘config.paths`); otherwise, it defaults to `%w(./app/models ./lib/models)`.
Note that these paths are the roots of the directory hierarchies where the models are located; it is not necessary to indicate every subdirectory, as long as these root paths are located in ‘$LOAD_PATH`.
68 69 70 71 72 |
# File 'lib/mongoid/loadable.rb', line 68 def model_paths @model_paths ||= defined?(Rails) ? Rails.application.config.paths["app/models"]. : DEFAULT_MODEL_PATHS end |
#model_paths=(paths) ⇒ Object
Sets the model paths to the given array of paths. These are the paths where the application’s model definitions are located.
78 79 80 |
# File 'lib/mongoid/loadable.rb', line 78 def model_paths=(paths) @model_paths = paths end |