react_on_rails 9.0.0.beta.11 → 9.0.0.beta.12
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|