react_on_rails 11.0.0 → 12.0.0
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 +5 -5
- data/.circleci/config.yml +320 -0
- data/.eslintignore +2 -1
- data/.eslintrc +30 -2
- data/.github/FUNDING.yml +1 -0
- data/.gitignore +3 -1
- data/.prettierignore +10 -0
- data/.prettierrc +23 -0
- data/.release-it.json +3 -0
- data/.rubocop.yml +39 -11
- data/.travis.yml +11 -22
- data/CHANGELOG.md +235 -6
- data/CONTRIBUTING.md +64 -84
- data/Gemfile +3 -5
- data/KUDOS.md +4 -1
- data/{docs/LICENSE.md → LICENSE.md} +1 -1
- data/PROJECTS.md +7 -1
- data/REACT-ON-RAILS-PRO-LICENSE +95 -0
- data/README.md +233 -630
- data/Rakefile +1 -5
- data/SUMMARY.md +42 -29
- data/book.json +5 -5
- data/docs/additional-reading/asset-pipeline.md +8 -16
- data/docs/additional-reading/convert-rails-5-api-only-app.md +19 -0
- data/docs/additional-reading/credits.md +10 -0
- data/docs/additional-reading/images.md +1 -1
- data/docs/additional-reading/rails-engine-integration.md +7 -0
- data/docs/additional-reading/rails_view_rendering_from_inline_javascript.md +2 -1
- data/docs/additional-reading/react-helmet.md +30 -10
- data/docs/additional-reading/react-router.md +52 -75
- data/docs/additional-reading/server-rendering-tips.md +14 -11
- data/docs/additional-reading/upgrade-webpacker-v3-to-v4.md +10 -0
- data/docs/additional-reading/webpack.md +2 -2
- data/docs/api/javascript-api.md +24 -4
- data/docs/api/redux-store-api.md +102 -0
- data/docs/api/view-helpers-api.md +133 -0
- data/docs/articles.md +20 -0
- data/docs/basics/client-vs-server-rendering.md +23 -0
- data/docs/basics/configuration.md +145 -61
- data/docs/basics/deployment.md +4 -0
- data/docs/basics/{generator.md → generator-details.md} +5 -8
- data/docs/basics/heroku-deployment.md +24 -0
- data/docs/basics/hmr-and-hot-reloading-with-the-webpack-dev-server.md +49 -0
- data/docs/basics/i18n.md +45 -23
- data/docs/basics/installation-into-an-existing-rails-app.md +59 -0
- data/docs/basics/minitest-configuration.md +31 -0
- data/docs/basics/react-server-rendering.md +29 -0
- data/docs/{additional-reading → basics}/recommended-project-structure.md +38 -10
- data/docs/basics/render-functions-and-railscontext.md +205 -0
- data/docs/basics/rspec-configuration.md +73 -0
- data/docs/basics/upgrading-react-on-rails.md +75 -4
- data/docs/basics/webpack-configuration.md +50 -0
- data/docs/contributor-info/errors-with-hooks.md +45 -0
- data/docs/contributor-info/pull-requests.md +44 -0
- data/docs/misc/doctrine.md +2 -2
- data/docs/{additional-reading → outdated}/code-splitting.md +19 -9
- data/docs/outdated/how-react-on-rails-works.md +44 -0
- data/docs/{basics/installation-overview.md → outdated/manual-installation-overview.md} +8 -13
- data/docs/{additional-reading → outdated}/rails-assets-relative-paths.md +3 -3
- data/docs/{additional-reading → outdated}/rails-assets.md +5 -13
- data/docs/testimonials/hvmn.md +25 -0
- data/docs/testimonials/resortpass.md +13 -0
- data/docs/testimonials/testimonials.md +28 -0
- data/docs/tutorial.md +182 -44
- data/jest.config.js +4 -0
- data/lib/generators/USAGE +1 -1
- data/lib/generators/react_on_rails/base_generator.rb +2 -2
- data/lib/generators/react_on_rails/dev_tests_generator.rb +3 -2
- data/lib/generators/react_on_rails/generator_helper.rb +4 -6
- data/lib/generators/react_on_rails/install_generator.rb +2 -0
- data/lib/generators/react_on_rails/templates/base/base/Procfile.dev +3 -1
- data/lib/generators/react_on_rails/templates/base/base/Procfile.dev-hmr +26 -0
- data/lib/generators/react_on_rails/templates/base/base/app/javascript/bundles/HelloWorld/components/HelloWorld.jsx +20 -40
- data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb +4 -1
- data/lib/generators/react_on_rails/templates/redux/base/app/javascript/bundles/HelloWorld/components/HelloWorld.jsx +4 -8
- data/lib/generators/react_on_rails/templates/redux/base/app/javascript/bundles/HelloWorld/store/helloWorldStore.js +1 -3
- data/lib/react_on_rails/configuration.rb +175 -102
- data/lib/react_on_rails/error.rb +2 -0
- data/lib/react_on_rails/git_utils.rb +2 -0
- data/lib/react_on_rails/{react_on_rails_helper.rb → helper.rb} +201 -225
- data/lib/react_on_rails/json_output.rb +1 -1
- data/lib/react_on_rails/json_parse_error.rb +28 -0
- data/lib/react_on_rails/locales/base.rb +150 -0
- data/lib/react_on_rails/locales/to_js.rb +37 -0
- data/lib/react_on_rails/locales/to_json.rb +27 -0
- data/lib/react_on_rails/prerender_error.rb +56 -18
- data/lib/react_on_rails/react_component/render_options.rb +98 -0
- data/lib/react_on_rails/server_rendering_js_code.rb +42 -0
- data/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb +139 -106
- data/lib/react_on_rails/server_rendering_pool.rb +4 -16
- data/lib/react_on_rails/test_helper/ensure_assets_compiled.rb +7 -8
- data/lib/react_on_rails/test_helper/webpack_assets_compiler.rb +17 -0
- data/lib/react_on_rails/test_helper/webpack_assets_status_checker.rb +10 -6
- data/lib/react_on_rails/test_helper.rb +18 -7
- data/lib/react_on_rails/utils.rb +66 -26
- data/lib/react_on_rails/version.rb +1 -1
- data/lib/react_on_rails/version_checker.rb +5 -1
- data/lib/react_on_rails/version_syntax_converter.rb +14 -12
- data/lib/react_on_rails/webpacker_utils.rb +44 -10
- data/lib/react_on_rails.rb +8 -3
- data/lib/tasks/assets.rake +33 -46
- data/lib/tasks/locale.rake +4 -2
- data/package-scripts.yml +49 -0
- data/package.json +49 -40
- data/rakelib/dummy_apps.rake +1 -9
- data/rakelib/example_type.rb +3 -1
- data/rakelib/examples.rake +3 -0
- data/rakelib/lint.rake +2 -7
- data/rakelib/node_package.rake +2 -2
- data/rakelib/release.rake +4 -8
- data/rakelib/run_rspec.rake +5 -18
- data/react_on_rails.gemspec +5 -6
- data/tsconfig.json +14 -0
- data/webpackConfigLoader.js +5 -4
- data/yarn.lock +7645 -1821
- metadata +71 -61
- data/Gemfile.rails32 +0 -74
- data/docs/additional-reading/babel.md +0 -5
- data/docs/additional-reading/caching-and-performance.md +0 -4
- data/docs/additional-reading/heroku-deployment.md +0 -92
- data/docs/additional-reading/hot-reloading-rails-development.md +0 -57
- data/docs/additional-reading/node-server-rendering.md +0 -5
- data/docs/additional-reading/rspec-configuration.md +0 -56
- data/docs/api/ruby-api-hot-reload-view-helpers.md +0 -44
- data/docs/api/ruby-api.md +0 -8
- data/lib/generators/react_on_rails/templates/base/base/Procfile.dev-server +0 -12
- data/lib/react_on_rails/assets_precompile.rb +0 -150
- data/lib/react_on_rails/locales_to_js.rb +0 -134
- data/lib/react_on_rails/react_component/options.rb +0 -64
- /data/docs/{misc → outdated}/rails3.md +0 -0
|
@@ -1,103 +1,17 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
#
|
|
3
|
+
# rubocop:disable Metrics/ClassLength
|
|
4
4
|
|
|
5
5
|
module ReactOnRails
|
|
6
6
|
def self.configure
|
|
7
7
|
yield(configuration)
|
|
8
|
-
setup_config_values
|
|
8
|
+
configuration.setup_config_values
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
DEFAULT_GENERATED_ASSETS_DIR = File.join(%w[public webpack], Rails.env).freeze
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
configure_generated_assets_dirs_deprecation
|
|
16
|
-
configure_skip_display_none_deprecation
|
|
17
|
-
ensure_generated_assets_dir_present
|
|
18
|
-
ensure_server_bundle_js_file_has_no_path
|
|
19
|
-
check_i18n_directory_exists
|
|
20
|
-
check_i18n_yml_directory_exists
|
|
21
|
-
check_server_render_method_is_only_execjs
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def self.check_server_render_method_is_only_execjs
|
|
25
|
-
return if @configuration.server_render_method.blank? ||
|
|
26
|
-
@configuration.server_render_method == "ExecJS"
|
|
27
|
-
|
|
28
|
-
msg = <<-MSG.strip_heredoc
|
|
29
|
-
Error configuring /config/react_on_rails.rb: invalid value for `config.server_render_method`.
|
|
30
|
-
If you wish to use a server render method other than ExecJS, contact justin@shakacode.com
|
|
31
|
-
for details.
|
|
32
|
-
MSG
|
|
33
|
-
raise ReactOnRails::Error, msg
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def self.check_i18n_directory_exists
|
|
37
|
-
return if @configuration.i18n_dir.nil?
|
|
38
|
-
return if Dir.exist?(@configuration.i18n_dir)
|
|
39
|
-
|
|
40
|
-
msg = <<-MSG.strip_heredoc
|
|
41
|
-
Error configuring /config/react_on_rails.rb: invalid value for `config.i18n_dir`.
|
|
42
|
-
Directory does not exist: #{@configuration.i18n_dir}. Set to value to nil or comment it
|
|
43
|
-
out if not using the React on Rails i18n feature.
|
|
44
|
-
MSG
|
|
45
|
-
raise ReactOnRails::Error, msg
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def self.check_i18n_yml_directory_exists
|
|
49
|
-
return if @configuration.i18n_yml_dir.nil?
|
|
50
|
-
return if Dir.exist?(@configuration.i18n_yml_dir)
|
|
51
|
-
|
|
52
|
-
msg = <<-MSG.strip_heredoc
|
|
53
|
-
Error configuring /config/react_on_rails.rb: invalid value for `config.i18n_yml_dir`.
|
|
54
|
-
Directory does not exist: #{@configuration.i18n_yml_dir}. Set to value to nil or comment it
|
|
55
|
-
out if not using this i18n with React on Rails, or if you want to use all translation files.
|
|
56
|
-
MSG
|
|
57
|
-
raise ReactOnRails::Error, msg
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def self.ensure_generated_assets_dir_present
|
|
61
|
-
return if @configuration.generated_assets_dir.present?
|
|
62
|
-
|
|
63
|
-
@configuration.generated_assets_dir = DEFAULT_GENERATED_ASSETS_DIR
|
|
64
|
-
puts "ReactOnRails: Set generated_assets_dir to default: #{DEFAULT_GENERATED_ASSETS_DIR}"
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def self.configure_generated_assets_dirs_deprecation
|
|
68
|
-
return if @configuration.generated_assets_dirs.blank?
|
|
69
|
-
|
|
70
|
-
puts "[DEPRECATION] ReactOnRails: Use config.generated_assets_dir rather than "\
|
|
71
|
-
"generated_assets_dirs"
|
|
72
|
-
if @configuration.generated_assets_dir.blank?
|
|
73
|
-
@configuration.generated_assets_dir = @configuration.generated_assets_dirs
|
|
74
|
-
else
|
|
75
|
-
puts "[DEPRECATION] ReactOnRails. You have both generated_assets_dirs and "\
|
|
76
|
-
"generated_assets_dir defined. Define ONLY generated_assets_dir"
|
|
77
|
-
end
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def self.ensure_webpack_generated_files_exists
|
|
81
|
-
return unless @configuration.webpack_generated_files.empty?
|
|
82
|
-
|
|
83
|
-
files = ["hello-world-bundle.js"]
|
|
84
|
-
files << @configuration.server_bundle_js_file if @configuration.server_bundle_js_file.present?
|
|
85
|
-
|
|
86
|
-
@configuration.webpack_generated_files = files
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def self.ensure_server_bundle_js_file_has_no_path
|
|
90
|
-
return unless @configuration.server_bundle_js_file.include?(File::SEPARATOR)
|
|
91
|
-
|
|
92
|
-
puts "[DEPRECATION] ReactOnRails: remove path from server_bundle_js_file in configuration. "\
|
|
93
|
-
"All generated files must go in #{@configuration.generated_assets_dir}"
|
|
94
|
-
@configuration.server_bundle_js_file = File.basename(@configuration.server_bundle_js_file)
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
def self.configure_skip_display_none_deprecation
|
|
98
|
-
return if @configuration.skip_display_none.nil?
|
|
99
|
-
puts "[DEPRECATION] ReactOnRails: remove skip_display_none from configuration."
|
|
100
|
-
end
|
|
12
|
+
DEFAULT_SERVER_RENDER_TIMEOUT = 20
|
|
13
|
+
DEFAULT_POOL_SIZE = 1
|
|
14
|
+
DEFAULT_RANDOM_DOM_ID = true # for backwards compatability
|
|
101
15
|
|
|
102
16
|
def self.configuration
|
|
103
17
|
@configuration ||= Configuration.new(
|
|
@@ -109,19 +23,21 @@ module ReactOnRails
|
|
|
109
23
|
prerender: false,
|
|
110
24
|
replay_console: true,
|
|
111
25
|
logging_on_server: true,
|
|
112
|
-
raise_on_prerender_error:
|
|
26
|
+
raise_on_prerender_error: Rails.env.development?,
|
|
113
27
|
trace: Rails.env.development?,
|
|
114
28
|
development_mode: Rails.env.development?,
|
|
115
|
-
server_renderer_pool_size:
|
|
116
|
-
server_renderer_timeout:
|
|
29
|
+
server_renderer_pool_size: DEFAULT_POOL_SIZE,
|
|
30
|
+
server_renderer_timeout: DEFAULT_SERVER_RENDER_TIMEOUT,
|
|
117
31
|
skip_display_none: nil,
|
|
118
32
|
# skip_display_none is deprecated
|
|
119
33
|
webpack_generated_files: %w[manifest.json],
|
|
120
34
|
rendering_extension: nil,
|
|
121
35
|
server_render_method: nil,
|
|
122
|
-
symlink_non_digested_assets_regex: nil,
|
|
123
36
|
build_test_command: "",
|
|
124
|
-
build_production_command: ""
|
|
37
|
+
build_production_command: "",
|
|
38
|
+
random_dom_id: DEFAULT_RANDOM_DOM_ID,
|
|
39
|
+
same_bundle_for_client_and_server: false,
|
|
40
|
+
i18n_output_format: nil
|
|
125
41
|
)
|
|
126
42
|
end
|
|
127
43
|
|
|
@@ -133,8 +49,9 @@ module ReactOnRails
|
|
|
133
49
|
:generated_assets_dirs, :generated_assets_dir,
|
|
134
50
|
:webpack_generated_files, :rendering_extension, :build_test_command,
|
|
135
51
|
:build_production_command,
|
|
136
|
-
:i18n_dir, :i18n_yml_dir,
|
|
137
|
-
:server_render_method, :
|
|
52
|
+
:i18n_dir, :i18n_yml_dir, :i18n_output_format,
|
|
53
|
+
:server_render_method, :random_dom_id,
|
|
54
|
+
:same_bundle_for_client_and_server
|
|
138
55
|
|
|
139
56
|
def initialize(node_modules_location: nil, server_bundle_js_file: nil, prerender: nil,
|
|
140
57
|
replay_console: nil,
|
|
@@ -145,17 +62,19 @@ module ReactOnRails
|
|
|
145
62
|
generated_assets_dir: nil, webpack_generated_files: nil,
|
|
146
63
|
rendering_extension: nil, build_test_command: nil,
|
|
147
64
|
build_production_command: nil,
|
|
148
|
-
|
|
149
|
-
|
|
65
|
+
same_bundle_for_client_and_server: nil,
|
|
66
|
+
i18n_dir: nil, i18n_yml_dir: nil, i18n_output_format: nil,
|
|
67
|
+
random_dom_id: nil, server_render_method: nil)
|
|
150
68
|
self.node_modules_location = node_modules_location.present? ? node_modules_location : Rails.root
|
|
151
|
-
self.server_bundle_js_file = server_bundle_js_file
|
|
152
69
|
self.generated_assets_dirs = generated_assets_dirs
|
|
153
70
|
self.generated_assets_dir = generated_assets_dir
|
|
154
71
|
self.build_test_command = build_test_command
|
|
155
72
|
self.build_production_command = build_production_command
|
|
156
73
|
self.i18n_dir = i18n_dir
|
|
157
74
|
self.i18n_yml_dir = i18n_yml_dir
|
|
75
|
+
self.i18n_output_format = i18n_output_format
|
|
158
76
|
|
|
77
|
+
self.random_dom_id = random_dom_id
|
|
159
78
|
self.prerender = prerender
|
|
160
79
|
self.replay_console = replay_console
|
|
161
80
|
self.logging_on_server = logging_on_server
|
|
@@ -169,6 +88,8 @@ module ReactOnRails
|
|
|
169
88
|
self.skip_display_none = skip_display_none
|
|
170
89
|
|
|
171
90
|
# Server rendering:
|
|
91
|
+
self.server_bundle_js_file = server_bundle_js_file
|
|
92
|
+
self.same_bundle_for_client_and_server = same_bundle_for_client_and_server
|
|
172
93
|
self.server_renderer_pool_size = self.development_mode ? 1 : server_renderer_pool_size
|
|
173
94
|
self.server_renderer_timeout = server_renderer_timeout # seconds
|
|
174
95
|
|
|
@@ -176,7 +97,159 @@ module ReactOnRails
|
|
|
176
97
|
self.rendering_extension = rendering_extension
|
|
177
98
|
|
|
178
99
|
self.server_render_method = server_render_method
|
|
179
|
-
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# on ReactOnRails
|
|
103
|
+
def setup_config_values
|
|
104
|
+
ensure_webpack_generated_files_exists
|
|
105
|
+
configure_generated_assets_dirs_deprecation
|
|
106
|
+
configure_skip_display_none_deprecation
|
|
107
|
+
ensure_generated_assets_dir_present
|
|
108
|
+
check_i18n_directory_exists
|
|
109
|
+
check_i18n_yml_directory_exists
|
|
110
|
+
check_server_render_method_is_only_execjs
|
|
111
|
+
error_if_using_webpacker_and_generated_assets_dir_not_match_public_output_path
|
|
112
|
+
check_deprecated_settings
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
private
|
|
116
|
+
|
|
117
|
+
def check_deprecated_settings
|
|
118
|
+
if build_production_command.present? &&
|
|
119
|
+
ReactOnRails::WebpackerUtils.webpacker_webpack_production_config_exists?
|
|
120
|
+
msg = <<~MSG
|
|
121
|
+
Setting ReactOnRails configuration for `build_production_command` is
|
|
122
|
+
not necessary if you have config/webpack/production.js. When that file
|
|
123
|
+
exists, React on Rails DOES NOT modify the standard assets:precompile.
|
|
124
|
+
If you want React on Rails to modify to the standard assets:precompile
|
|
125
|
+
to use your config/initializers/react_on_rails.rb config.build_production_command
|
|
126
|
+
then delete the config/webpack/production.js.
|
|
127
|
+
MSG
|
|
128
|
+
Rails.logger.warn(msg)
|
|
129
|
+
end
|
|
130
|
+
#
|
|
131
|
+
# msg = <<~MSG
|
|
132
|
+
# ReactOnRails configuration for `build_production_command` is removed.
|
|
133
|
+
# Move this command into `bin/webpack` converting the script to a shell script.
|
|
134
|
+
# MSG
|
|
135
|
+
# raise ReactOnRails::Error, msg
|
|
136
|
+
# Commenting out until v13 when
|
|
137
|
+
# https://github.com/rails/webpacker/issues/2640 gets resolved
|
|
138
|
+
# if node_modules_location.present?
|
|
139
|
+
# Rails.logger.warn("ReactOnRails configuration for `node_modules_location` is deprecated. "\
|
|
140
|
+
# "Instead, prepend a `cd client` (or whichever location) before your test command.")
|
|
141
|
+
# end
|
|
142
|
+
#
|
|
143
|
+
# return unless build_production_command.present?
|
|
144
|
+
#
|
|
145
|
+
# msg = <<~MSG
|
|
146
|
+
# ReactOnRails configuration for `build_production_command` is removed.
|
|
147
|
+
# Move this command into `bin/webpack` converting the script to a shell script.
|
|
148
|
+
# MSG
|
|
149
|
+
# raise ReactOnRails::Error, msg
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def error_if_using_webpacker_and_generated_assets_dir_not_match_public_output_path
|
|
153
|
+
return unless ReactOnRails::WebpackerUtils.using_webpacker?
|
|
154
|
+
|
|
155
|
+
return if generated_assets_dir.blank?
|
|
156
|
+
|
|
157
|
+
webpacker_public_output_path = ReactOnRails::WebpackerUtils.webpacker_public_output_path
|
|
158
|
+
|
|
159
|
+
if File.expand_path(generated_assets_dir) == webpacker_public_output_path.to_s
|
|
160
|
+
Rails.logger.warn("You specified generated_assets_dir in `config/initializers/react_on_rails.rb` "\
|
|
161
|
+
"with Webpacker. Remove this line from your configuration file.")
|
|
162
|
+
else
|
|
163
|
+
msg = <<~MSG
|
|
164
|
+
Error configuring /config/initializers/react_on_rails.rb: You are using webpacker
|
|
165
|
+
and your specified value for generated_assets_dir = #{generated_assets_dir}
|
|
166
|
+
that does not match the value for public_output_path specified in
|
|
167
|
+
webpacker.yml = #{webpacker_public_output_path}. You should remove the configuration
|
|
168
|
+
value for "generated_assets_dir" from your config/initializers/react_on_rails.rb file.
|
|
169
|
+
MSG
|
|
170
|
+
raise ReactOnRails::Error, msg
|
|
171
|
+
end
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
def check_server_render_method_is_only_execjs
|
|
175
|
+
return if server_render_method.blank? ||
|
|
176
|
+
server_render_method == "ExecJS"
|
|
177
|
+
|
|
178
|
+
msg = <<-MSG.strip_heredoc
|
|
179
|
+
Error configuring /config/initializers/react_on_rails.rb: invalid value for `config.server_render_method`.
|
|
180
|
+
If you wish to use a server render method other than ExecJS, contact justin@shakacode.com
|
|
181
|
+
for details.
|
|
182
|
+
MSG
|
|
183
|
+
raise ReactOnRails::Error, msg
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
def check_i18n_directory_exists
|
|
187
|
+
return if i18n_dir.nil?
|
|
188
|
+
return if Dir.exist?(i18n_dir)
|
|
189
|
+
|
|
190
|
+
msg = <<-MSG.strip_heredoc
|
|
191
|
+
Error configuring /config/initializers/react_on_rails.rb: invalid value for `config.i18n_dir`.
|
|
192
|
+
Directory does not exist: #{i18n_dir}. Set to value to nil or comment it
|
|
193
|
+
out if not using the React on Rails i18n feature.
|
|
194
|
+
MSG
|
|
195
|
+
raise ReactOnRails::Error, msg
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
def check_i18n_yml_directory_exists
|
|
199
|
+
return if i18n_yml_dir.nil?
|
|
200
|
+
return if Dir.exist?(i18n_yml_dir)
|
|
201
|
+
|
|
202
|
+
msg = <<-MSG.strip_heredoc
|
|
203
|
+
Error configuring /config/initializers/react_on_rails.rb: invalid value for `config.i18n_yml_dir`.
|
|
204
|
+
Directory does not exist: #{i18n_yml_dir}. Set to value to nil or comment it
|
|
205
|
+
out if not using this i18n with React on Rails, or if you want to use all translation files.
|
|
206
|
+
MSG
|
|
207
|
+
raise ReactOnRails::Error, msg
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
def ensure_generated_assets_dir_present
|
|
211
|
+
return if generated_assets_dir.present? || ReactOnRails::WebpackerUtils.using_webpacker?
|
|
212
|
+
|
|
213
|
+
self.generated_assets_dir = DEFAULT_GENERATED_ASSETS_DIR
|
|
214
|
+
Rails.logger.warn "ReactOnRails: Set generated_assets_dir to default: #{DEFAULT_GENERATED_ASSETS_DIR}"
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
def configure_generated_assets_dirs_deprecation
|
|
218
|
+
return if generated_assets_dirs.blank?
|
|
219
|
+
|
|
220
|
+
if ReactOnRails::WebpackerUtils.using_webpacker?
|
|
221
|
+
webpacker_public_output_path = ReactOnRails::WebpackerUtils.webpacker_public_output_path
|
|
222
|
+
Rails.logger.warn "Error configuring config/initializers/react_on_rails. Define neither the "\
|
|
223
|
+
"generated_assets_dirs no the generated_assets_dir when using Webpacker. This is defined by "\
|
|
224
|
+
"public_output_path specified in webpacker.yml = #{webpacker_public_output_path}."
|
|
225
|
+
return
|
|
226
|
+
end
|
|
227
|
+
|
|
228
|
+
Rails.logger.warn "[DEPRECATION] ReactOnRails: Use config.generated_assets_dir rather than "\
|
|
229
|
+
"generated_assets_dirs"
|
|
230
|
+
if generated_assets_dir.blank?
|
|
231
|
+
self.generated_assets_dir = generated_assets_dirs
|
|
232
|
+
else
|
|
233
|
+
Rails.logger.warn "[DEPRECATION] ReactOnRails. You have both generated_assets_dirs and "\
|
|
234
|
+
"generated_assets_dir defined. Define ONLY generated_assets_dir if NOT using Webpacker"\
|
|
235
|
+
" and define neither if using Webpacker"
|
|
236
|
+
end
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
def ensure_webpack_generated_files_exists
|
|
240
|
+
return unless webpack_generated_files.empty?
|
|
241
|
+
|
|
242
|
+
files = ["manifest.json"]
|
|
243
|
+
files << server_bundle_js_file if server_bundle_js_file.present?
|
|
244
|
+
|
|
245
|
+
self.webpack_generated_files = files
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
def configure_skip_display_none_deprecation
|
|
249
|
+
return if skip_display_none.nil?
|
|
250
|
+
|
|
251
|
+
Rails.logger.warn "[DEPRECATION] ReactOnRails: remove skip_display_none from configuration."
|
|
180
252
|
end
|
|
181
253
|
end
|
|
182
254
|
end
|
|
255
|
+
# rubocop:enable Metrics/ClassLength
|
data/lib/react_on_rails/error.rb
CHANGED
|
@@ -6,8 +6,10 @@ module ReactOnRails
|
|
|
6
6
|
module GitUtils
|
|
7
7
|
def self.uncommitted_changes?(message_handler)
|
|
8
8
|
return false if ENV["COVERAGE"] == "true"
|
|
9
|
+
|
|
9
10
|
status = `git status --porcelain`
|
|
10
11
|
return false if $CHILD_STATUS.success? && status.empty?
|
|
12
|
+
|
|
11
13
|
error = if !$CHILD_STATUS.success?
|
|
12
14
|
"You do not have Git installed. Please install Git, and commit your changes before continuing"
|
|
13
15
|
else
|