class ViewComponentLiquid::FileSystem
Attributes
view[R]
Public Class Methods
new(view)
click to toggle source
# File lib/view_component_liquid/file_system.rb, line 6 def initialize(view) @view = view end
Public Instance Methods
read_template_file(template_path)
click to toggle source
# File lib/view_component_liquid/file_system.rb, line 10 def read_template_file(template_path) controller_path = view.controller_path template_name = File.basename(template_path) template_folders = unless template_path.include?("/") [ "", controller_path, "application", "shared" ] else [File.dirname(template_path)] end # Search Rails' configured view paths first result = view.view_paths.find_all( template_name, template_folders, true, lookup_details ) if result.present? LiquidComponent.parse(result.first.source).content else # Time to look through autoload paths for component folders components_folders = Zeitwerk::Loader.all_dirs.select {|item| item.ends_with?("_components")} template = nil components_folders.each do |components_folder| tmpl = components_folder + "/#{template_path}.liquid" if File.exist?(tmpl) template = LiquidComponent.parse(File.read(tmpl)).content break end end template.presence || raise(ActionView::MissingTemplate.new(template_folders + components_folders, template_name, template_folders, false, "liquid views")) end end
Private Instance Methods
lookup_details()
click to toggle source
# File lib/view_component_liquid/file_system.rb, line 57 def lookup_details { locale: [view.locale, :en], formats: view.formats, variants: [], handlers: [:liquid], versions: [] } end