Sha256: 8b11d5f5034dc80194f098cf4b645eb940a46938373550bdb366734024a38fbf

Contents?: true

Size: 1 KB

Versions: 5

Compression:

Stored size: 1 KB

Contents

module ReactiveRuby
  module ServerRendering
    class ContextualRenderer < React::ServerRendering::SprocketsRenderer
      def initialize(options = {})
        super(options)
        ComponentLoader.new(v8_context).load
      end

      def render(component_name, props, prerender_options)
        if prerender_options.is_a? Hash
          if v8_runtime? and prerender_options[:context_initializer]
            raise React::ServerRendering::PrerenderError.new(component_name, props, "you must use 'therubyracer' with the prerender[:context] option") unless v8_runtime?
          else
            prerender_options[:context_initializer].call v8_context
            prerender_options = prerender_options[:static] ? :static : true
          end
        end

        super(component_name, props, prerender_options)
      end

      private

      def v8_runtime?
        ExecJS.runtime.name == "(V8)"
      end

      def v8_context
        @v8_context ||= @context.instance_variable_get("@v8_context")
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
reactive-ruby-0.7.30 lib/reactive-ruby/server_rendering/contextual_renderer.rb
reactive-ruby-0.7.29 lib/reactive-ruby/server_rendering/contextual_renderer.rb
reactive-ruby-0.7.28 lib/reactive-ruby/server_rendering/contextual_renderer.rb
reactive-ruby-0.7.27 lib/reactive-ruby/server_rendering/contextual_renderer.rb
reactive-ruby-0.7.26 lib/reactive-ruby/server_rendering/contextual_renderer.rb