class Jbuilder::DependencyTracker
Constants
- DIRECT_RENDERS
-
Matches:
json.partial! "messages/message" json.partial!('messages/message')
- EXPLICIT_DEPENDENCY
- INDIRECT_RENDERS
-
Matches:
json.partial! partial: "comments/comment" json.comments @post.comments, partial: "comments/comment", as: :comment json.array! @posts, partial: "posts/post", as: :post = render partial: "account"
Attributes
Public Class Methods
Source
# File lib/jbuilder/jbuilder_dependency_tracker.rb, line 26 def self.call(name, template, view_paths = nil) new(name, template, view_paths).dependencies end
Source
# File lib/jbuilder/jbuilder_dependency_tracker.rb, line 30 def initialize(name, template, view_paths = nil) @name, @template, @view_paths = name, template, view_paths end
Public Instance Methods
Source
# File lib/jbuilder/jbuilder_dependency_tracker.rb, line 34 def dependencies direct_dependencies + indirect_dependencies + explicit_dependencies end
Private Instance Methods
Source
# File lib/jbuilder/jbuilder_dependency_tracker.rb, line 42 def direct_dependencies source.scan(DIRECT_RENDERS).map(&:second) end
Source
# File lib/jbuilder/jbuilder_dependency_tracker.rb, line 50 def explicit_dependencies dependencies = source.scan(EXPLICIT_DEPENDENCY).flatten.uniq wildcards, explicits = dependencies.partition { |dependency| dependency.end_with?("/*") } (explicits + resolve_directories(wildcards)).uniq end
Source
# File lib/jbuilder/jbuilder_dependency_tracker.rb, line 46 def indirect_dependencies source.scan(INDIRECT_RENDERS).map(&:second) end
Source
# File lib/jbuilder/jbuilder_dependency_tracker.rb, line 58 def resolve_directories(wildcard_dependencies) return [] unless @view_paths return [] if wildcard_dependencies.empty? # Remove trailing "/*" prefixes = wildcard_dependencies.map { |query| query[0..-3] } @view_paths.flat_map(&:all_template_paths).uniq.filter_map { |path| path.to_s if prefixes.include?(path.prefix) }.sort end
Source
# File lib/jbuilder/jbuilder_dependency_tracker.rb, line 70 def source template.source end