Skip to content

Commit beef2a7

Browse files
committed
refactor: adopt client/server component structure per documentation
1 parent 8247203 commit beef2a7

File tree

9 files changed

+25
-14
lines changed

9 files changed

+25
-14
lines changed

lib/generators/react_on_rails/base_generator.rb

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ def copy_base_files
4444
def copy_js_bundle_files
4545
base_path = "base/base/"
4646
base_files = %w[app/javascript/packs/server-bundle.js
47-
app/javascript/src/HelloWorld/HelloWorldServer.js
4847
app/javascript/src/HelloWorld/HelloWorld.module.css]
4948
base_files.each { |file| copy_file("#{base_path}#{file}", file) }
5049
end

lib/generators/react_on_rails/react_no_redux_generator.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ class ReactNoReduxGenerator < Rails::Generators::Base
1212

1313
def copy_base_files
1414
base_js_path = "base/base"
15-
base_files = %w[app/javascript/src/HelloWorld/ror_components/HelloWorld.jsx]
15+
base_files = %w[app/javascript/src/HelloWorld/ror_components/HelloWorld.client.jsx
16+
app/javascript/src/HelloWorld/ror_components/HelloWorld.server.jsx]
1617
base_files.each { |file| copy_file("#{base_js_path}/#{file}", file) }
1718
end
1819

lib/generators/react_on_rails/react_with_redux_generator.rb

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,17 @@ def copy_base_files
2020
base_files.each { |file| copy_file("#{base_js_path}/#{file}", file) }
2121

2222
# Also copy Redux-connected component to auto-registration structure
23-
copy_file("#{base_js_path}/app/javascript/bundles/HelloWorld/startup/HelloWorldApp.jsx",
24-
"app/javascript/src/HelloWorld/ror_components/HelloWorld.jsx")
23+
copy_file("#{base_js_path}/app/javascript/bundles/HelloWorld/startup/HelloWorldApp.client.jsx",
24+
"app/javascript/src/HelloWorld/ror_components/HelloWorld.client.jsx")
25+
copy_file("#{base_js_path}/app/javascript/bundles/HelloWorld/startup/HelloWorldApp.server.jsx",
26+
"app/javascript/src/HelloWorld/ror_components/HelloWorld.server.jsx")
2527
copy_file("#{base_js_path}/app/javascript/bundles/HelloWorld/components/HelloWorld.module.css",
2628
"app/javascript/src/HelloWorld/HelloWorld.module.css")
2729

28-
ror_component_file = "app/javascript/src/HelloWorld/ror_components/HelloWorld.jsx"
29-
gsub_file(ror_component_file, "../store/helloWorldStore", "../../../bundles/HelloWorld/store/helloWorldStore")
30-
gsub_file(ror_component_file, "../containers/HelloWorldContainer",
30+
# Update import paths in client component
31+
ror_client_file = "app/javascript/src/HelloWorld/ror_components/HelloWorld.client.jsx"
32+
gsub_file(ror_client_file, "../store/helloWorldStore", "../../../bundles/HelloWorld/store/helloWorldStore")
33+
gsub_file(ror_client_file, "../containers/HelloWorldContainer",
3134
"../../../bundles/HelloWorld/containers/HelloWorldContainer")
3235
end
3336

@@ -38,7 +41,8 @@ def copy_base_redux_files
3841
constants/helloWorldConstants.js
3942
reducers/helloWorldReducer.js
4043
store/helloWorldStore.js
41-
startup/HelloWorldApp.jsx].each do |file|
44+
startup/HelloWorldApp.client.jsx
45+
startup/HelloWorldApp.server.jsx].each do |file|
4246
copy_file("#{base_hello_world_path}/#{file}",
4347
"app/javascript/bundles/HelloWorld/#{file}")
4448
end
@@ -49,7 +53,7 @@ def create_appropriate_templates
4953
base_js_path = "#{base_path}/app/javascript"
5054
config = {
5155
component_name: "HelloWorld",
52-
app_relative_path: "../bundles/HelloWorld/startup/HelloWorldApp"
56+
app_relative_path: "../bundles/HelloWorld/startup/HelloWorldApp.client"
5357
}
5458

5559
template("#{base_js_path}/packs/registration.js.tt", "app/javascript/packs/hello-world-bundle.js", config)

lib/generators/react_on_rails/templates/base/base/app/javascript/src/HelloWorld/HelloWorldServer.js renamed to lib/generators/react_on_rails/templates/base/base/app/javascript/src/HelloWorld/ror_components/HelloWorld.server.jsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import HelloWorld from './ror_components/HelloWorld';
1+
import HelloWorld from './HelloWorld.client';
22
// This could be specialized for server rendering
33
// For example, if using React Router, we'd have the SSR setup here.
44

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import HelloWorld from './HelloWorld.client';
2+
// This could be specialized for server rendering
3+
// For example, if using React Router, we'd have the SSR setup here.
4+
5+
export default HelloWorld;

spec/react_on_rails/support/shared_examples/base_generator_examples.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
Procfile.dev-static-assets
2424
Procfile.dev-prod-assets].each { |file| assert_file(file) }
2525

26-
# Auto-registration component is always created
27-
assert_file "app/javascript/src/HelloWorld/ror_components/HelloWorld.jsx"
26+
# Auto-registration components are always created
27+
assert_file "app/javascript/src/HelloWorld/ror_components/HelloWorld.client.jsx"
28+
assert_file "app/javascript/src/HelloWorld/ror_components/HelloWorld.server.jsx"
2829
end
2930
end

spec/react_on_rails/support/shared_examples/react_with_redux_generator_examples.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
it "creates appropriate templates" do
99
assert_file("app/javascript/packs/hello-world-bundle.js") do |contents|
10-
expect(contents).to match("import HelloWorld from '../bundles/HelloWorld/startup/HelloWorldApp';")
10+
expect(contents).to match("import HelloWorld from '../bundles/HelloWorld/startup/HelloWorldApp.client';")
1111
end
1212
assert_file("app/views/hello_world/index.html.erb") do |contents|
1313
expect(contents).to match(/"HelloWorld"/)
@@ -20,6 +20,7 @@
2020
app/javascript/bundles/HelloWorld/constants/helloWorldConstants.js
2121
app/javascript/bundles/HelloWorld/reducers/helloWorldReducer.js
2222
app/javascript/bundles/HelloWorld/store/helloWorldStore.js
23-
app/javascript/bundles/HelloWorld/startup/HelloWorldApp.jsx].each { |file| assert_file(file) }
23+
app/javascript/bundles/HelloWorld/startup/HelloWorldApp.client.jsx
24+
app/javascript/bundles/HelloWorld/startup/HelloWorldApp.server.jsx].each { |file| assert_file(file) }
2425
end
2526
end

0 commit comments

Comments
 (0)