Method: AnnotateModels.get_loaded_model

Defined in:
lib/annotate/annotate_models.rb

.get_loaded_model(model_path, file) ⇒ Object

Retrieve loaded model class



601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
# File 'lib/annotate/annotate_models.rb', line 601

def get_loaded_model(model_path, file)
  unless skip_subdirectory_model_load
    loaded_model_class = get_loaded_model_by_path(model_path)
    return loaded_model_class if loaded_model_class
  end

  # We cannot get loaded model when `model_path` is loaded by Rails
  # auto_load/eager_load paths. Try all possible model paths one by one.
  absolute_file = File.expand_path(file)
  model_paths =
    $LOAD_PATH.map(&:to_s)
              .select { |path| absolute_file.include?(path) }
              .map { |path| absolute_file.sub(path, '').sub(/\.rb$/, '').sub(/^\//, '') }
  model_paths
    .map { |path| get_loaded_model_by_path(path) }
    .find { |loaded_model| !loaded_model.nil? }
end