Skip to content

Commit e1e319d

Browse files
committed
feat(ServerRendering) update readme, fix configs
1 parent beb61af commit e1e319d

File tree

3 files changed

+21
-24
lines changed

3 files changed

+21
-24
lines changed

README.md

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -154,18 +154,14 @@ You can configure your pool of JS virtual machines and specify where it should l
154154
# config/environments/application.rb
155155
# These are the defaults if you dont specify any yourself
156156
MyApp::Application.configure do
157-
# renderer pool size:
158-
config.react.max_renderers = 10
159-
# prerender timeout, in seconds:
160-
config.react.timeout = 20
161-
# where to get React.js source:
162-
config.react.react_js = lambda { File.read(::Rails.application.assets.resolve('react.js')) }
163-
# array of filenames that will be requested from the asset pipeline
164-
# and concatenated:
165-
config.react.component_filenames = ['components.js']
166-
# server-side console.log, console.warn, and console.error messages will be replayed on the client
167-
# (you can set this to `true` in config/enviroments/development.rb to replay in development only)
168-
config.react.replay_console = false
157+
# Settings for the pool of renderers:
158+
config.react.server_renderer_pool_size ||= 10
159+
config.react.server_renderer_timeout ||= 20 # seconds
160+
config.react.server_renderer = React::ServerRendering::SprocketsRenderer
161+
config.react.server_renderer_options = {
162+
files: ["react.js", "components.js"], # files to load for prerendering
163+
replay_console: true, # if true, console.* will be replayed client-side
164+
}
169165
end
170166
```
171167

lib/react/rails/railtie.rb

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ class Railtie < ::Rails::Railtie
99
config.react.variant = (::Rails.env.production? ? :production : :development)
1010
config.react.addons = false
1111
config.react.jsx_transform_options = {}
12-
# Server-side rendering
13-
config.react.max_renderers = 10
14-
config.react.timeout = 20 #seconds
15-
config.react.react_js = lambda {File.read(::Rails.application.assets.resolve('react.js'))}
16-
config.react.component_filenames = ['components.js']
12+
# Server rendering:
13+
config.react.server_renderer_pool_size = 10
14+
config.react.server_renderer_timeout = 20 # seconds
15+
config.react.server_renderer = nil # defaults to SprocketsRenderer
16+
config.react.server_renderer_options = {} # SprocketsRenderer provides defaults
1717

1818
# Watch .jsx files for changes in dev, so we can reload the JS VMs with the new JS code.
1919
initializer "react_rails.add_watchable_files", group: :all do |app|
@@ -49,10 +49,14 @@ class Railtie < ::Rails::Railtie
4949
"react-#{variant}",
5050
].compact.join('-')
5151

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
52+
# The class isn't accessible in the configure block, so assign it here if it wasn't overridden:
53+
app.config.react.server_renderer ||= React::ServerRendering::SprocketsRenderer
54+
55+
React::ServerRendering.pool_size = app.config.react.server_renderer_pool_size
56+
React::ServerRendering.pool_timeout = app.config.react.server_renderer_timeout
57+
React::ServerRendering.renderer_options = app.config.react.server_renderer_options
58+
React::ServerRendering.renderer = app.config.react.server_renderer
59+
5660
React::ServerRendering.reset_pool
5761
# Reload renderers in dev when files change
5862
ActionDispatch::Reloader.to_prepare { React::ServerRendering.reset_pool }

lib/react/server_rendering.rb

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,6 @@ module ServerRendering
66
mattr_accessor :renderer, :renderer_options,
77
:pool_size, :pool_timeout
88

9-
self.pool_size = 10
10-
self.pool_timeout = 20
11-
129
def self.reset_pool
1310
options = {size: pool_size, timeout: pool_timeout}
1411
@@pool = ConnectionPool.new(options) { create_renderer }

0 commit comments

Comments
 (0)