Skip to content

Commit 73c40a5

Browse files
committed
refactor(BundleRenderer) rename SprocketsRenderer -> BundleRenderer since it also supports webpacker
1 parent c61e8c9 commit 73c40a5

File tree

9 files changed

+20
-20
lines changed

9 files changed

+20
-20
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ MyApp::Application.configure do
288288
# Settings for the pool of renderers:
289289
config.react.server_renderer_pool_size ||= 1 # ExecJS doesn't allow more than one on MRI
290290
config.react.server_renderer_timeout ||= 20 # seconds
291-
config.react.server_renderer = React::ServerRendering::SprocketsRenderer
291+
config.react.server_renderer = React::ServerRendering::BundleRenderer
292292
config.react.server_renderer_options = {
293293
files: ["server_rendering.js"], # files to load for prerendering
294294
replay_console: true, # if true, console.* will be replayed client-side
@@ -306,14 +306,14 @@ end
306306
- `#initialize(options={})`, which accepts the hash from `config.react.server_renderer_options`
307307
- `#render(component_name, props, prerender_options)` to return a string of HTML
308308

309-
`react-rails` provides two renderer classes: `React::ServerRendering::ExecJSRenderer` and `React::ServerRendering::SprocketsRenderer`.
309+
`react-rails` provides two renderer classes: `React::ServerRendering::ExecJSRenderer` and `React::ServerRendering::BundleRenderer`.
310310

311311
`ExecJSRenderer` offers two other points for extension:
312312

313313
- `#before_render(component_name, props, prerender_options)` to return a string of JavaScript to execute _before_ calling `React.render`
314314
- `#after_render(component_name, props, prerender_options)` to return a string of JavaScript to execute _after_ calling `React.render`
315315

316-
Any subclass of `ExecJSRenderer` may use those hooks (for example, `SprocketsRenderer` uses them to handle `console.*` on the server).
316+
Any subclass of `ExecJSRenderer` may use those hooks (for example, `BundleRenderer` uses them to handle `console.*` on the server).
317317

318318
## Controller Actions
319319

lib/react/rails/railtie.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@ class Railtie < ::Rails::Railtie
1515
# Server rendering:
1616
config.react.server_renderer_pool_size = 1 # increase if you're on JRuby
1717
config.react.server_renderer_timeout = 20 # seconds
18-
config.react.server_renderer = nil # defaults to SprocketsRenderer
19-
config.react.server_renderer_options = {} # SprocketsRenderer provides defaults
18+
config.react.server_renderer = nil # defaults to BundleRenderer
19+
config.react.server_renderer_options = {} # BundleRenderer provides defaults
2020
# Changing files with these extensions in these directories will cause the server renderer to reload:
2121
config.react.server_renderer_directories = ["/app/assets/javascripts/"]
2222
config.react.server_renderer_extensions = ["jsx"]
@@ -96,7 +96,7 @@ class Railtie < ::Rails::Railtie
9696

9797
config.after_initialize do |app|
9898
# The class isn't accessible in the configure block, so assign it here if it wasn't overridden:
99-
app.config.react.server_renderer ||= React::ServerRendering::SprocketsRenderer
99+
app.config.react.server_renderer ||= React::ServerRendering::BundleRenderer
100100

101101
React::ServerRendering.pool_size = app.config.react.server_renderer_pool_size
102102
React::ServerRendering.pool_timeout = app.config.react.server_renderer_timeout

lib/react/server_rendering.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
require 'connection_pool'
22
require 'react/server_rendering/exec_js_renderer'
3-
require 'react/server_rendering/sprockets_renderer'
3+
require 'react/server_rendering/bundle_renderer'
44

55
module React
66
module ServerRendering

lib/react/server_rendering/sprockets_renderer.rb renamed to lib/react/server_rendering/bundle_renderer.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,14 @@
66
module React
77
module ServerRendering
88
# Extends ExecJSRenderer for the Rails environment
9-
# - builds JS code out of the asset pipeline
9+
# - fetches JS code from the Rails app (webpacker or sprockets)
1010
# - stringifies props
1111
# - implements console replay
12-
class SprocketsRenderer < ExecJSRenderer
12+
class BundleRenderer < ExecJSRenderer
1313
# Reimplement console methods for replaying on the client
14-
CONSOLE_POLYFILL = File.read(File.join(File.dirname(__FILE__), "sprockets_renderer/console_polyfill.js"))
15-
CONSOLE_REPLAY = File.read(File.join(File.dirname(__FILE__), "sprockets_renderer/console_replay.js"))
16-
TIMEOUT_POLYFILL = File.read(File.join(File.dirname(__FILE__), "sprockets_renderer/timeout_polyfill.js"))
14+
CONSOLE_POLYFILL = File.read(File.join(File.dirname(__FILE__), "bundle_renderer/console_polyfill.js"))
15+
CONSOLE_REPLAY = File.read(File.join(File.dirname(__FILE__), "bundle_renderer/console_replay.js"))
16+
TIMEOUT_POLYFILL = File.read(File.join(File.dirname(__FILE__), "bundle_renderer/timeout_polyfill.js"))
1717

1818
def initialize(options={})
1919
@replay_console = options.fetch(:replay_console, true)
@@ -54,7 +54,7 @@ class << self
5454
# default Rails setups.
5555
#
5656
# You can provide a custom asset container
57-
# with `React::ServerRendering::SprocketsRenderer.asset_container_class = MyAssetContainer`.
57+
# with `React::ServerRendering::BundleRenderer.asset_container_class = MyAssetContainer`.
5858
#
5959
# @return [#find_asset(logical_path)] An object that returns asset contents by logical path
6060
def asset_container

lib/react/server_rendering/sprockets_renderer/console_polyfill.js renamed to lib/react/server_rendering/bundle_renderer/console_polyfill.js

File renamed without changes.

lib/react/server_rendering/sprockets_renderer/console_replay.js renamed to lib/react/server_rendering/bundle_renderer/console_replay.js

File renamed without changes.

lib/react/server_rendering/sprockets_renderer/timeout_polyfill.js renamed to lib/react/server_rendering/bundle_renderer/timeout_polyfill.js

File renamed without changes.

test/react/rails/component_mount_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ class ComponentMountTest < ActionDispatch::IntegrationTest
7272
assert(html.include?('data-reactid'), "it includes React properties")
7373
end
7474

75-
test '#react_component passes :static to SprocketsRenderer' do
75+
test '#react_component passes :static to BundleRenderer' do
7676
html = @helper.react_component('Todo', {todo: 'render on the server'}.to_json, prerender: :static)
7777
assert(html.include?('>render on the server</li>'), "it includes rendered HTML")
7878
assert(!html.include?('data-reactid'), "it DOESNT INCLUDE React properties")

test/react/server_rendering/sprockets_renderer_test.rb renamed to test/react/server_rendering/bundle_renderer_test.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
require 'test_helper'
22

33
if SprocketsHelpers.available? || WebpackerHelpers.available?
4-
class SprocketsRendererTest < ActiveSupport::TestCase
4+
class BundleRendererTest < ActiveSupport::TestCase
55
CALLBACKS = [:before_render, :after_render]
66

77
webpacker_compiled = false
@@ -10,7 +10,7 @@ class SprocketsRendererTest < ActiveSupport::TestCase
1010
WebpackerHelpers.compile
1111
webpacker_compiled = true
1212
end
13-
@renderer = React::ServerRendering::SprocketsRenderer.new({})
13+
@renderer = React::ServerRendering::BundleRenderer.new({})
1414
end
1515

1616
CALLBACKS.each do |callback_name|
@@ -56,7 +56,7 @@ class SprocketsRendererTest < ActiveSupport::TestCase
5656
end
5757

5858
test '#render console messages can be disabled' do
59-
no_log_renderer = React::ServerRendering::SprocketsRenderer.new({replay_console: false})
59+
no_log_renderer = React::ServerRendering::BundleRenderer.new({replay_console: false})
6060
result = no_log_renderer.render("TodoListWithConsoleLog", {todos: ["log some messages"]}, nil)
6161
assert_no_match(/console.log.apply\(console, \["got initial state"\]\)/, result)
6262
assert_no_match(/console.warn.apply\(console, \["mounted component"\]\)/, result)
@@ -93,14 +93,14 @@ class SprocketsRendererTest < ActiveSupport::TestCase
9393
test '.new accepts additional code to add to the JS context' do
9494
additional_code = File.read(File.expand_path("../../../helper_files/WithoutSprockets.js", __FILE__))
9595

96-
additional_renderer = React::ServerRendering::SprocketsRenderer.new(code: additional_code)
96+
additional_renderer = React::ServerRendering::BundleRenderer.new(code: additional_code)
9797

9898
assert_match(/drink more caffeine<\/span>/, additional_renderer.render("WithoutSprockets", {label: "drink more caffeine"}, nil))
9999
end
100100

101101
# These use cases don't apply to Webpacker since the require.context comes from a pack:
102102
test '.new accepts any filenames' do
103-
limited_renderer = React::ServerRendering::SprocketsRenderer.new(files: ["react-server.js", "react_ujs.js", "components/Todo.js"])
103+
limited_renderer = React::ServerRendering::BundleRenderer.new(files: ["react-server.js", "react_ujs.js", "components/Todo.js"])
104104
assert_match(/get a real job<\/li>/, limited_renderer.render("Todo", {todo: "get a real job"}, nil))
105105
err = assert_raises React::ServerRendering::PrerenderError do
106106
limited_renderer.render("TodoList", {todos: []}, nil)
@@ -117,7 +117,7 @@ class SprocketsRendererTest < ActiveSupport::TestCase
117117

118118
Rails.application.config.assets.compile = false
119119

120-
@renderer = React::ServerRendering::SprocketsRenderer.new(files: legacy_rendering_files)
120+
@renderer = React::ServerRendering::BundleRenderer.new(files: legacy_rendering_files)
121121

122122
result = @renderer.render("Todo", {todo: "write tests"}, nil)
123123
assert_match(/<li.*write tests<\/li>/, result)

0 commit comments

Comments
 (0)