react_on_rails 9.0.0.beta.11 → 9.0.0.beta.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.eslintignore +2 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +5 -0
- data/.travis.yml +11 -0
- data/CHANGELOG.md +24 -9
- data/Gemfile +2 -2
- data/Gemfile.rails32 +74 -0
- data/README.md +17 -12
- data/Rakefile +8 -1
- data/app/helpers/react_on_rails_helper.rb +1 -1
- data/docs/additional-reading/asset-pipeline.md +20 -0
- data/docs/additional-reading/hot-reloading-rails-development.md +0 -75
- data/docs/additional-reading/rspec-configuration.md +6 -23
- data/{lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb.tt → docs/basics/configuration.md} +78 -41
- data/docs/basics/generator.md +0 -5
- data/docs/basics/installation-overview.md +5 -4
- data/docs/tutorial.md +25 -13
- data/lib/generators/USAGE +0 -4
- data/lib/generators/react_on_rails/base_generator.rb +41 -81
- data/lib/generators/react_on_rails/dev_tests_generator.rb +7 -5
- data/lib/generators/react_on_rails/install_generator.rb +5 -10
- data/lib/generators/react_on_rails/react_no_redux_generator.rb +10 -9
- data/lib/generators/react_on_rails/react_with_redux_generator.rb +27 -17
- data/lib/generators/react_on_rails/templates/.eslintrc +2 -0
- data/lib/generators/react_on_rails/templates/base/base/Procfile.dev +4 -0
- data/lib/generators/react_on_rails/templates/base/base/Procfile.dev-server +5 -0
- data/lib/generators/react_on_rails/templates/base/base/{client/app → app/javascript}/bundles/HelloWorld/components/HelloWorld.jsx +0 -0
- data/lib/generators/react_on_rails/templates/base/base/{client/app/bundles/HelloWorld/startup/registration.jsx.tt → app/javascript/packs/registration.js.tt} +0 -0
- data/lib/generators/react_on_rails/templates/base/base/app/views/hello_world/index.html.erb.tt +0 -1
- data/lib/generators/react_on_rails/templates/base/base/app/views/layouts/{hello_world.html.erb.tt → hello_world.html.erb} +3 -3
- data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb +41 -0
- data/lib/generators/react_on_rails/templates/dev_tests/.eslintrc +25 -0
- data/lib/generators/react_on_rails/templates/dev_tests/spec/rails_helper.rb +0 -1
- data/lib/generators/react_on_rails/templates/dev_tests/spec/spec_helper.rb +2 -0
- data/lib/generators/react_on_rails/templates/redux/base/{client/app/bundles/HelloWorld/actions/helloWorldActionCreators.jsx → app/javascript/bundles/HelloWorld/actions/helloWorldActionCreators.js} +0 -0
- data/lib/generators/react_on_rails/templates/redux/base/{client/app → app/javascript}/bundles/HelloWorld/components/HelloWorld.jsx +0 -0
- data/lib/generators/react_on_rails/templates/redux/base/{client/app/bundles/HelloWorld/constants/helloWorldConstants.jsx → app/javascript/bundles/HelloWorld/constants/helloWorldConstants.js} +0 -0
- data/lib/generators/react_on_rails/templates/redux/base/{client/app/bundles/HelloWorld/containers/HelloWorldContainer.jsx → app/javascript/bundles/HelloWorld/containers/HelloWorldContainer.js} +0 -0
- data/lib/generators/react_on_rails/templates/redux/base/{client/app/bundles/HelloWorld/reducers/helloWorldReducer.jsx → app/javascript/bundles/HelloWorld/reducers/helloWorldReducer.js} +0 -0
- data/lib/generators/react_on_rails/templates/redux/base/{client/app → app/javascript}/bundles/HelloWorld/startup/HelloWorldApp.jsx +0 -0
- data/lib/generators/react_on_rails/templates/redux/base/{client/app/bundles/HelloWorld/store/helloWorldStore.jsx → app/javascript/bundles/HelloWorld/store/helloWorldStore.js} +0 -0
- data/lib/react_on_rails/configuration.rb +15 -10
- data/lib/react_on_rails/server_rendering_pool/exec.rb +21 -8
- data/lib/react_on_rails/test_helper.rb +6 -6
- data/lib/react_on_rails/test_helper/ensure_assets_compiled.rb +1 -1
- data/lib/react_on_rails/test_helper/webpack_assets_compiler.rb +3 -1
- data/lib/react_on_rails/test_helper/webpack_assets_status_checker.rb +10 -6
- data/lib/react_on_rails/utils.rb +34 -3
- data/lib/react_on_rails/version.rb +1 -1
- data/lib/react_on_rails/version_checker.rb +1 -1
- data/lib/tasks/assets.rake +10 -2
- data/package.json +6 -2
- data/rakelib/dummy_apps.rake +9 -0
- data/rakelib/example_type.rb +8 -19
- data/rakelib/examples.rake +3 -5
- data/rakelib/run_rspec.rake +17 -0
- data/yarn.lock +29 -0
- metadata +19 -23
- data/lib/generators/react_on_rails/node_generator.rb +0 -24
- data/lib/generators/react_on_rails/templates/base/base/Procfile.dev.tt +0 -4
- data/lib/generators/react_on_rails/templates/base/base/client/.babelrc +0 -3
- data/lib/generators/react_on_rails/templates/base/base/client/REACT_ON_RAILS_CLIENT_README.md +0 -9
- data/lib/generators/react_on_rails/templates/base/base/client/package.json.tt +0 -36
- data/lib/generators/react_on_rails/templates/base/base/client/webpack.config.js +0 -78
- data/lib/generators/react_on_rails/templates/base/base/config/webpacker.yml +0 -28
- data/lib/generators/react_on_rails/templates/base/base/package.json.tt +0 -8
- data/lib/generators/react_on_rails/templates/node/base/client/node/package.json +0 -10
- data/lib/generators/react_on_rails/templates/node/base/client/node/server.js +0 -105
@@ -5,6 +5,7 @@ require_relative "generator_helper"
|
|
5
5
|
|
6
6
|
module ReactOnRails
|
7
7
|
module Generators
|
8
|
+
# TODO9: Do we need something like this still? How to put in with
|
8
9
|
FALLBACK_OPTION_FOR_NODE_MODULES = <<-TEXT
|
9
10
|
// This fixes an issue with resolving 'react' when using a local symlinked version
|
10
11
|
// of the node_package folder
|
@@ -28,7 +29,8 @@ module ReactOnRails
|
|
28
29
|
desc: "Setup prerender true for server rendered examples"
|
29
30
|
|
30
31
|
def copy_rspec_files
|
31
|
-
%w[
|
32
|
+
%w[.eslintrc
|
33
|
+
spec/spec_helper.rb
|
32
34
|
spec/rails_helper.rb
|
33
35
|
spec/simplecov_helper.rb
|
34
36
|
.rspec].each { |file| copy_file(file) }
|
@@ -54,16 +56,16 @@ module ReactOnRails
|
|
54
56
|
File.open(hello_world_index, "w+") { |f| f.puts new_hello_world_contents }
|
55
57
|
end
|
56
58
|
|
57
|
-
def
|
58
|
-
|
59
|
-
contents = File.read(
|
59
|
+
def add_yarn_relative_install_script_in_package_json
|
60
|
+
package_json = File.join(destination_root, "package.json")
|
61
|
+
contents = File.read(package_json)
|
60
62
|
replacement_value = <<-STRING
|
61
63
|
"scripts": {
|
62
64
|
"postinstall": "yarn link react-on-rails",
|
63
65
|
STRING
|
64
66
|
new_client_package_json_contents = contents.gsub(/ {2}"scripts": {/,
|
65
67
|
replacement_value)
|
66
|
-
File.open(
|
68
|
+
File.open(package_json, "w+") { |f| f.puts new_client_package_json_contents }
|
67
69
|
end
|
68
70
|
end
|
69
71
|
end
|
@@ -19,13 +19,6 @@ module ReactOnRails
|
|
19
19
|
desc: "Install Redux gems and Redux version of Hello World Example. Default: false",
|
20
20
|
aliases: "-R"
|
21
21
|
|
22
|
-
# --redux
|
23
|
-
class_option :node,
|
24
|
-
type: :boolean,
|
25
|
-
default: false,
|
26
|
-
desc: "Sets up node as a server rendering option. Default: false",
|
27
|
-
aliases: "-N"
|
28
|
-
|
29
22
|
# --ignore-warnings
|
30
23
|
class_option :ignore_warnings,
|
31
24
|
type: :boolean,
|
@@ -53,9 +46,11 @@ module ReactOnRails
|
|
53
46
|
|
54
47
|
def invoke_generators
|
55
48
|
invoke "react_on_rails:base"
|
56
|
-
|
57
|
-
|
58
|
-
|
49
|
+
if options.redux?
|
50
|
+
invoke "react_on_rails:react_with_redux"
|
51
|
+
else
|
52
|
+
invoke "react_on_rails:react_no_redux"
|
53
|
+
end
|
59
54
|
end
|
60
55
|
|
61
56
|
# NOTE: other requirements for existing files such as .gitignore or application.
|
@@ -11,21 +11,22 @@ module ReactOnRails
|
|
11
11
|
source_root(File.expand_path("../templates", __FILE__))
|
12
12
|
|
13
13
|
def copy_base_files
|
14
|
-
|
15
|
-
base_files = %w[
|
16
|
-
base_files.each { |file| copy_file("#{
|
14
|
+
base_js_path = "base/base"
|
15
|
+
base_files = %w[app/javascript/bundles/HelloWorld/components/HelloWorld.jsx]
|
16
|
+
base_files.each { |file| copy_file("#{base_js_path}/#{file}", file) }
|
17
17
|
end
|
18
18
|
|
19
19
|
def create_appropriate_templates
|
20
|
-
base_path = "base/base
|
21
|
-
location = "client/app/bundles/HelloWorld/"
|
22
|
-
source = base_path + location
|
20
|
+
base_path = "base/base"
|
23
21
|
config = {
|
24
22
|
component_name: "HelloWorld",
|
25
|
-
app_relative_path: "../components/HelloWorld"
|
23
|
+
app_relative_path: "../bundles/HelloWorld/components/HelloWorld"
|
26
24
|
}
|
27
|
-
|
28
|
-
template("#{base_path}app/
|
25
|
+
|
26
|
+
template("#{base_path}/app/javascript/packs/registration.js.tt",
|
27
|
+
"app/javascript/packs/hello-world-bundle.js", config)
|
28
|
+
template("#{base_path}/app/views/hello_world/index.html.erb.tt",
|
29
|
+
"app/views/hello_world/index.html.erb", config)
|
29
30
|
end
|
30
31
|
end
|
31
32
|
end
|
@@ -9,33 +9,43 @@ module ReactOnRails
|
|
9
9
|
source_root(File.expand_path("../templates", __FILE__))
|
10
10
|
|
11
11
|
def create_redux_directories
|
12
|
-
dirs = %w[actions constants reducers store]
|
13
|
-
dirs.each { |name| empty_directory("
|
12
|
+
dirs = %w[actions constants containers reducers store startup]
|
13
|
+
dirs.each { |name| empty_directory("app/javascript/bundles/HelloWorld/#{name}") }
|
14
|
+
end
|
15
|
+
|
16
|
+
def copy_base_files
|
17
|
+
base_js_path = "base/base"
|
18
|
+
base_files = %w[app/javascript/bundles/HelloWorld/components/HelloWorld.jsx]
|
19
|
+
base_files.each { |file| copy_file("#{base_js_path}/#{file}", file) }
|
14
20
|
end
|
15
21
|
|
16
22
|
def copy_base_redux_files
|
17
|
-
|
18
|
-
%w[
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
23
|
+
base_hello_world_path = "redux/base/app/javascript/bundles/HelloWorld"
|
24
|
+
%w[actions/helloWorldActionCreators.js
|
25
|
+
containers/HelloWorldContainer.js
|
26
|
+
constants/helloWorldConstants.js
|
27
|
+
reducers/helloWorldReducer.js
|
28
|
+
store/helloWorldStore.js
|
29
|
+
startup/HelloWorldApp.jsx].each do |file|
|
30
|
+
copy_file("#{base_hello_world_path}/#{file}",
|
31
|
+
"app/javascript/bundles/HelloWorld/#{file}")
|
26
32
|
end
|
27
33
|
end
|
28
34
|
|
29
35
|
def create_appropriate_templates
|
30
|
-
base_path = "base/base
|
31
|
-
|
32
|
-
source = base_path + location
|
36
|
+
base_path = "base/base"
|
37
|
+
base_js_path = "#{base_path}/app/javascript"
|
33
38
|
config = {
|
34
39
|
component_name: "HelloWorldApp",
|
35
|
-
app_relative_path: "
|
40
|
+
app_relative_path: "../bundles/HelloWorld/startup/HelloWorldApp"
|
36
41
|
}
|
37
|
-
|
38
|
-
template("#{
|
42
|
+
|
43
|
+
template("#{base_js_path}/packs/registration.js.tt", "app/javascript/packs/hello-world-bundle.js", config)
|
44
|
+
template("#{base_path}/app/views/hello_world/index.html.erb.tt", "app/views/hello_world/index.html.erb", config)
|
45
|
+
end
|
46
|
+
|
47
|
+
def add_redux_yarn_dependencies
|
48
|
+
run "yarn add redux react-redux"
|
39
49
|
end
|
40
50
|
end
|
41
51
|
end
|
File without changes
|
File without changes
|
@@ -2,11 +2,11 @@
|
|
2
2
|
<html>
|
3
3
|
<head>
|
4
4
|
<title>ReactOnRailsWithWebpacker</title>
|
5
|
-
|
6
|
-
|
5
|
+
<%= csrf_meta_tags %>
|
6
|
+
<%= javascript_pack_tag 'hello-world-bundle' %>
|
7
7
|
</head>
|
8
8
|
|
9
9
|
<body>
|
10
|
-
|
10
|
+
<%= yield %>
|
11
11
|
</body>
|
12
12
|
</html>
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# See docs/basics/configuration.md for many more options
|
4
|
+
|
5
|
+
ReactOnRails.configure do |config|
|
6
|
+
# This configures the script to run to build the production assets by webpack. Set this to nil
|
7
|
+
# if you don't want react_on_rails building this file for you.
|
8
|
+
config.npm_build_production_command = "RAILS_ENV=production bin/webpack"
|
9
|
+
|
10
|
+
################################################################################
|
11
|
+
################################################################################
|
12
|
+
# TEST CONFIGURATION OPTIONS
|
13
|
+
# Below options are used with the use of this test helper:
|
14
|
+
# ReactOnRails::TestHelper.configure_rspec_to_compile_assets(config)
|
15
|
+
################################################################################
|
16
|
+
|
17
|
+
# If you are using this in your spec_helper.rb (or rails_helper.rb):
|
18
|
+
#
|
19
|
+
# ReactOnRails::TestHelper.configure_rspec_to_compile_assets(config)
|
20
|
+
#
|
21
|
+
# with rspec then this controls what yarn command is run
|
22
|
+
# to automatically refresh your webpack assets on every test run.
|
23
|
+
#
|
24
|
+
config.build_test_command = "RAILS_ENV=test bin/webpack"
|
25
|
+
|
26
|
+
################################################################################
|
27
|
+
################################################################################
|
28
|
+
# SERVER RENDERING OPTIONS
|
29
|
+
################################################################################
|
30
|
+
# This is the file used for server rendering of React when using `(prerender: true)`
|
31
|
+
# If you are never using server rendering, you should set this to "".
|
32
|
+
# Note, there is only one server bundle, unlike JavaScript where you want to minimize the size
|
33
|
+
# of the JS sent to the client. For the server rendering, React on Rails creates a pool of
|
34
|
+
# JavaScript execution instances which should handle any component requested.
|
35
|
+
#
|
36
|
+
# While you may configure this to be the same as your client bundle file, this file is typically
|
37
|
+
# different. You should have ONE server bundle which can create all of your server rendered
|
38
|
+
# React components.
|
39
|
+
#
|
40
|
+
config.server_bundle_js_file = "hello-world-bundle.js"
|
41
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
---
|
2
|
+
extends: eslint-config-shakacode
|
3
|
+
|
4
|
+
plugins:
|
5
|
+
- react
|
6
|
+
|
7
|
+
globals:
|
8
|
+
__DEBUG_SERVER_ERRORS__: true
|
9
|
+
__SERVER_ERRORS__: true
|
10
|
+
|
11
|
+
env:
|
12
|
+
browser: true
|
13
|
+
node: true
|
14
|
+
mocha: true
|
15
|
+
|
16
|
+
rules:
|
17
|
+
no-console: 0
|
18
|
+
|
19
|
+
# https://github.com/benmosher/eslint-plugin-import/issues/340
|
20
|
+
import/no-extraneous-dependencies: 0
|
21
|
+
|
22
|
+
# because template cannot find react-on-rails
|
23
|
+
import/no-unresolved: 0
|
24
|
+
|
25
|
+
semi: 0
|
@@ -38,7 +38,6 @@ Capybara.javascript_driver = :poltergeist
|
|
38
38
|
RSpec.configure do |config|
|
39
39
|
# Ensure that if we are running js tests, we are using latest webpack assets
|
40
40
|
# This will use the defaults of :js and :server_rendering meta tags
|
41
|
-
ReactOnRails::TestHelper.launch_node if ReactOnRails.configuration.server_render_method == "NodeJS"
|
42
41
|
ReactOnRails::TestHelper.configure_rspec_to_compile_assets(config)
|
43
42
|
|
44
43
|
# Remove this line if you"re not using ActiveRecord or ActiveRecord fixtures
|
@@ -19,6 +19,8 @@
|
|
19
19
|
#
|
20
20
|
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
21
21
|
RSpec.configure do |config|
|
22
|
+
ReactOnRails::TestHelper.configure_rspec_to_compile_assets(config)
|
23
|
+
|
22
24
|
# rspec-expectations config goes here. You can use an alternate
|
23
25
|
# assertion/expectation library such as wrong or the stdlib/minitest
|
24
26
|
# assertions if you prefer.
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# NOTE: ReactOnRails::Utils.using_webpacker? always will return false when called here.
|
4
|
+
|
3
5
|
module ReactOnRails
|
4
6
|
def self.configure
|
5
7
|
yield(configuration)
|
@@ -81,6 +83,7 @@ module ReactOnRails
|
|
81
83
|
|
82
84
|
def self.configuration
|
83
85
|
@configuration ||= Configuration.new(
|
86
|
+
node_modules_location: "",
|
84
87
|
generated_assets_dirs: nil,
|
85
88
|
|
86
89
|
# generated_assets_dirs is deprecated
|
@@ -97,11 +100,11 @@ module ReactOnRails
|
|
97
100
|
skip_display_none: nil,
|
98
101
|
|
99
102
|
# skip_display_none is deprecated
|
100
|
-
webpack_generated_files: [],
|
103
|
+
webpack_generated_files: %w[manifest.json],
|
101
104
|
rendering_extension: nil,
|
102
|
-
server_render_method: "",
|
105
|
+
server_render_method: "ExecJS",
|
103
106
|
symlink_non_digested_assets_regex: nil,
|
104
|
-
|
107
|
+
build_test_command: "",
|
105
108
|
i18n_dir: "",
|
106
109
|
i18n_yml_dir: "",
|
107
110
|
npm_build_production_command: ""
|
@@ -109,30 +112,32 @@ module ReactOnRails
|
|
109
112
|
end
|
110
113
|
|
111
114
|
class Configuration
|
112
|
-
attr_accessor :server_bundle_js_file, :prerender, :replay_console,
|
115
|
+
attr_accessor :node_modules_location, :server_bundle_js_file, :prerender, :replay_console,
|
113
116
|
:trace, :development_mode,
|
114
117
|
:logging_on_server, :server_renderer_pool_size,
|
115
118
|
:server_renderer_timeout, :skip_display_none, :raise_on_prerender_error,
|
116
119
|
:generated_assets_dirs, :generated_assets_dir,
|
117
|
-
:webpack_generated_files, :rendering_extension, :
|
120
|
+
:webpack_generated_files, :rendering_extension, :build_test_command,
|
118
121
|
:npm_build_production_command,
|
119
122
|
:i18n_dir, :i18n_yml_dir,
|
120
123
|
:server_render_method, :symlink_non_digested_assets_regex
|
121
124
|
|
122
|
-
def initialize(
|
125
|
+
def initialize(node_modules_location: "", server_bundle_js_file: nil, prerender: nil,
|
126
|
+
replay_console: nil,
|
123
127
|
trace: nil, development_mode: nil,
|
124
128
|
logging_on_server: nil, server_renderer_pool_size: nil,
|
125
|
-
server_renderer_timeout: nil, raise_on_prerender_error:
|
129
|
+
server_renderer_timeout: nil, raise_on_prerender_error: true,
|
126
130
|
skip_display_none: nil, generated_assets_dirs: nil,
|
127
131
|
generated_assets_dir: nil, webpack_generated_files: nil,
|
128
|
-
rendering_extension: nil,
|
132
|
+
rendering_extension: nil, build_test_command: nil,
|
129
133
|
npm_build_production_command: nil,
|
130
134
|
i18n_dir: nil, i18n_yml_dir: nil,
|
131
|
-
server_render_method:
|
135
|
+
server_render_method: "ExecJS", symlink_non_digested_assets_regex: nil)
|
136
|
+
self.node_modules_location = node_modules_location
|
132
137
|
self.server_bundle_js_file = server_bundle_js_file
|
133
138
|
self.generated_assets_dirs = generated_assets_dirs
|
134
139
|
self.generated_assets_dir = generated_assets_dir
|
135
|
-
self.
|
140
|
+
self.build_test_command = build_test_command
|
136
141
|
self.npm_build_production_command = npm_build_production_command
|
137
142
|
self.i18n_dir = i18n_dir
|
138
143
|
self.i18n_yml_dir = i18n_yml_dir
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "open-uri"
|
4
|
+
|
3
5
|
module ReactOnRails
|
4
6
|
module ServerRenderingPool
|
5
7
|
# This implementation of the rendering pool uses ExecJS to execute javasript code
|
@@ -14,11 +16,21 @@ module ReactOnRails
|
|
14
16
|
|
15
17
|
def self.reset_pool_if_server_bundle_was_modified
|
16
18
|
return unless ReactOnRails.configuration.development_mode
|
17
|
-
|
18
|
-
|
19
|
-
|
19
|
+
|
20
|
+
server_bundle_js_file_path = ReactOnRails::Utils.server_bundle_js_file_path
|
21
|
+
|
22
|
+
if Webpacker.dev_server.running?
|
23
|
+
return if @last_loaded_server_bundle == server_bundle_js_file_path
|
24
|
+
@last_loaded_server_bundle = server_bundle_js_file_path
|
25
|
+
else
|
26
|
+
# we're not hashing the server name and we can use the mtime
|
27
|
+
file_mtime = File.mtime(server_bundle_js_file_path)
|
28
|
+
@server_bundle_timestamp ||= file_mtime
|
29
|
+
return if @server_bundle_timestamp == file_mtime
|
30
|
+
@server_bundle_timestamp = file_mtime
|
31
|
+
end
|
32
|
+
|
20
33
|
ReactOnRails::ServerRenderingPool.reset_pool
|
21
|
-
@server_bundle_timestamp = file_mtime
|
22
34
|
end
|
23
35
|
|
24
36
|
# js_code: JavaScript expression that returns a string.
|
@@ -83,14 +95,15 @@ module ReactOnRails
|
|
83
95
|
|
84
96
|
server_js_file = ReactOnRails::Utils.server_bundle_js_file_path
|
85
97
|
|
86
|
-
|
98
|
+
# bundle_js_code = File.read(server_js_file)
|
99
|
+
begin
|
100
|
+
bundle_js_code = open(server_js_file, &:read)
|
101
|
+
rescue => e
|
87
102
|
msg = "You specified server rendering JS file: #{server_js_file}, but it cannot be "\
|
88
103
|
"read. You may set the server_bundle_js_file in your configuration to be \"\" to "\
|
89
|
-
"avoid this warning"
|
104
|
+
"avoid this warning.\nError is: #{e}"
|
90
105
|
raise msg
|
91
106
|
end
|
92
|
-
|
93
|
-
bundle_js_code = File.read(server_js_file)
|
94
107
|
# rubocop:disable Layout/IndentHeredoc
|
95
108
|
base_js_code = <<-JS
|
96
109
|
#{console_polyfill}
|
@@ -44,27 +44,27 @@ module ReactOnRails
|
|
44
44
|
# an example of usage.
|
45
45
|
#
|
46
46
|
# Typical usage passes all params as nil defaults.
|
47
|
-
# webpack_assets_status_checker: provide: `up_to_date?`, `whats_not_up_to_date`, `
|
47
|
+
# webpack_assets_status_checker: provide: `up_to_date?`, `whats_not_up_to_date`, `source_path`
|
48
48
|
# defaults to ReactOnRails::TestHelper::WebpackAssetsStatusChecker
|
49
49
|
# webpack_assets_compiler: provide one method: `def compile`
|
50
50
|
# defaults to ReactOnRails::TestHelper::WebpackAssetsCompiler
|
51
|
-
#
|
51
|
+
# source_path and generated_assets_dir are passed into the default webpack_assets_status_checker if you
|
52
52
|
# don't provide one.
|
53
53
|
# webpack_generated_files List of files to check for up-to-date-status, defaulting to
|
54
54
|
# webpack_generated_files in your configuration
|
55
55
|
def self.ensure_assets_compiled(webpack_assets_status_checker: nil,
|
56
56
|
webpack_assets_compiler: nil,
|
57
|
-
|
57
|
+
source_path: nil,
|
58
58
|
generated_assets_dir: nil,
|
59
59
|
webpack_generated_files: nil)
|
60
60
|
ReactOnRails::Utils.check_manifest_not_cached
|
61
61
|
if webpack_assets_status_checker.nil?
|
62
|
-
|
63
|
-
generated_assets_dir ||= ReactOnRails.
|
62
|
+
source_path ||= ReactOnRails::Utils.source_path
|
63
|
+
generated_assets_dir ||= ReactOnRails::Utils.generated_assets_dir
|
64
64
|
webpack_generated_files ||= ReactOnRails.configuration.webpack_generated_files
|
65
65
|
|
66
66
|
webpack_assets_status_checker ||=
|
67
|
-
WebpackAssetsStatusChecker.new(
|
67
|
+
WebpackAssetsStatusChecker.new(source_path: source_path,
|
68
68
|
generated_assets_dir: generated_assets_dir,
|
69
69
|
webpack_generated_files: webpack_generated_files)
|
70
70
|
|