Class: Mack::Rendering::Type::Distributed

Inherits:
Base
  • Object
show all
Defined in:
lib/mack-distributed/views/rendering/type/distributed.rb

Instance Method Summary collapse

Instance Method Details

#renderObject

render(:distributed, “distributed://host/resource”)

Raises:

  • (InvalidAddressableURIFormat)


7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/mack-distributed/views/rendering/type/distributed.rb', line 7

def render
    uri = Addressable::URI.parse(self._render_value)
    raise InvalidAddressableURIFormat.new("#{self._render_value}") if uri.host.nil? or uri.path.nil?
    
    app_name = uri.host
    resource = File.join("app", "views", uri.path)
    
    data = Mack::Distributed::View.ref(app_name)
    if data
      raw = ""
      Mack::Rendering::Engine::Registry.engines[:distributed].each do |e|
        @engine = find_engine(e).new(self.view_template)

        view_path = "#{resource}.#{self._options[:format]}.#{@engine.extension}"
        raw = data.get(view_path)
        break if !raw.nil?
      end
      
      raise Mack::Errors::ResourceNotFound.new("#{self._options[:distributed]}") if raw.nil?
      
      old_render_value = self.view_template._render_value.dup
      self.view_template._render_value = raw
      Mack::Rendering::Type::Inline.new(self.view_template).render
      # self.view_template.render_value = old_render_value
    end
end