8: def render
9: if !self._options[:layout].starts_with?("distributed")
10:
11: _original_render
12: else
13: uri = Addressable::URI.parse(self._options[:layout])
14: raise InvalidAddressableURIFormat.new("#{self._options[:layout]}") if uri.host.nil? or uri.path.nil?
15:
16: app_name = uri.host
17: resource = File.join("app", "views", "layouts", uri.path)
18:
19: data = Mack::Distributed::View.ref(app_name)
20: if data
21: raw = ""
22: Mack::Rendering::Engine::Registry.engines[:layout].each do |e|
23: @engine = find_engine(e).new(self.view_template)
24:
25: layout_path = "#{resource}.#{self._options[:format]}.#{@engine.extension}"
26: raw = data.get(layout_path)
27: break if !raw.nil?
28: end
29:
30: raise Mack::Errors::ResourceNotFound.new("#{self._options[:distributed]}") if raw.nil?
31:
32: old_render_value = self.view_template._render_value.dup
33: self.view_template._render_value = raw
34: Mack::Rendering::Type::Inline.new(self.view_template).render
35: end
36: end
37: end