Skip to content

Commit beb61af

Browse files
committed
feat(ServerRendering) remove previous Renderer
1 parent 381d8c8 commit beb61af

File tree

8 files changed

+26
-211
lines changed

8 files changed

+26
-211
lines changed

lib/react-rails.rb

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
require 'react/jsx'
2-
require 'react/renderer'
32
require 'react/rails'
4-
require 'react/console'
53
require 'react/server_rendering'
64

lib/react/console.rb

Lines changed: 0 additions & 30 deletions
This file was deleted.

lib/react/rails/railtie.rb

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -49,24 +49,13 @@ class Railtie < ::Rails::Railtie
4949
"react-#{variant}",
5050
].compact.join('-')
5151

52-
# Server Rendering
53-
# Concat component_filenames together for server rendering
54-
app.config.react.components_js = lambda {
55-
app.config.react.component_filenames.map do |filename|
56-
app.assets[filename].to_s
57-
end.join(";")
58-
}
59-
60-
do_setup = lambda do
61-
cfg = app.config.react
62-
React::Renderer.setup!( cfg.react_js, cfg.components_js, cfg.replay_console,
63-
{:size => cfg.max_renderers, :timeout => cfg.timeout})
64-
end
65-
66-
do_setup.call
67-
68-
# Reload the JS VMs in dev when files change
69-
ActionDispatch::Reloader.to_prepare(&do_setup)
52+
app.config.react.server_renderer_options ||= {}
53+
app.config.react.server_renderer ||= React::ServerRendering::SprocketsRenderer
54+
React::ServerRendering.renderer_options = app.config.react.server_renderer_options
55+
React::ServerRendering.renderer = app.config.react.server_renderer
56+
React::ServerRendering.reset_pool
57+
# Reload renderers in dev when files change
58+
ActionDispatch::Reloader.to_prepare { React::ServerRendering.reset_pool }
7059
end
7160
end
7261
end

lib/react/rails/view_helper.rb

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,28 @@
11
module React
22
module Rails
33
module ViewHelper
4-
54
# Render a UJS-type HTML tag annotated with data attributes, which
65
# are used by react_ujs to actually instantiate the React component
76
# on the client.
8-
#
9-
def react_component(name, args = {}, options = {}, &block)
7+
def react_component(name, props = {}, options = {}, &block)
108
options = {:tag => options} if options.is_a?(Symbol)
11-
block = Proc.new{concat React::Renderer.render(name, args)} if options[:prerender]
9+
10+
if options[:prerender]
11+
block = Proc.new{ concat React::ServerRendering.render(name, props) }
12+
end
1213

1314
html_options = options.reverse_merge(:data => {})
1415
html_options[:data].tap do |data|
1516
data[:react_class] = name
16-
data[:react_props] = React::Renderer.react_props(args) unless args.empty?
17+
data[:react_props] = (props.is_a?(String) ? props : props.to_json)
1718
end
1819
html_tag = html_options[:tag] || :div
19-
20+
2021
# remove internally used properties so they aren't rendered to DOM
2122
html_options.except!(:tag, :prerender)
22-
23+
2324
content_tag(html_tag, '', html_options, &block)
2425
end
25-
2626
end
2727
end
2828
end

lib/react/renderer.rb

Lines changed: 0 additions & 83 deletions
This file was deleted.

test/dummy/app/controllers/server_controller.rb

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,14 @@ def show
44
end
55

66
def console_example
7-
hack_replay_console_config true
7+
React::ServerRendering.renderer_options = {replay_console: true}
8+
React::ServerRendering.reset_pool
89
@todos = %w{todo1 todo2 todo3}
910
end
1011

1112
def console_example_suppressed
12-
hack_replay_console_config false
13+
React::ServerRendering.renderer_options = {replay_console: false}
14+
React::ServerRendering.reset_pool
1315
@todos = %w{todo1 todo2 todo3}
1416
end
15-
16-
private
17-
def hack_replay_console_config(value)
18-
# Don't do this in your app; just set it how you want it in config/application.rb
19-
cfg = ::Rails.application.config.react
20-
cfg.replay_console = value
21-
React::Renderer.setup!( cfg.react_js, cfg.components_js, cfg.replay_console,
22-
{:size => cfg.max_renderers, :timeout => cfg.timeout})
23-
end
2417
end

test/react/server_rendering_test.rb

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,18 @@ def render(component_name, props)
1313

1414
class ReactServerRenderingTest < ActiveSupport::TestCase
1515
setup do
16+
@previous_renderer = React::ServerRendering.renderer
17+
@previous_options = React::ServerRendering.renderer_options
1618
React::ServerRendering.renderer_options = "TEST"
1719
React::ServerRendering.renderer = NullRenderer
1820
React::ServerRendering.reset_pool
1921
end
2022

23+
teardown do
24+
React::ServerRendering.renderer = @previous_renderer
25+
React::ServerRendering.renderer_options = @previous_options
26+
end
27+
2128
test '.create_renderer makes a renderer with initialization options' do
2229
mock_renderer = MiniTest::Mock.new
2330
mock_renderer.expect(:new, :fake_renderer, [{mock: true}])

test/react_renderer_test.rb

Lines changed: 0 additions & 59 deletions
This file was deleted.

0 commit comments

Comments
 (0)