react_on_rails 13.3.5 → 13.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +2 -2
  3. data/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
  4. data/.github/workflows/lint-js-and-ruby.yml +2 -2
  5. data/.github/workflows/main.yml +5 -5
  6. data/.github/workflows/rspec-package-specs.yml +1 -1
  7. data/CHANGELOG.md +77 -61
  8. data/Gemfile.development_dependencies +2 -3
  9. data/README.md +5 -0
  10. data/docs/additional-details/recommended-project-structure.md +6 -6
  11. data/docs/additional-details/tips-for-usage-with-sp6.md +15 -0
  12. data/docs/deployment/heroku-deployment.md +15 -11
  13. data/docs/getting-started.md +28 -27
  14. data/docs/guides/configuration.md +17 -17
  15. data/docs/guides/file-system-based-automated-bundle-generation.md +42 -50
  16. data/docs/guides/hmr-and-hot-reloading-with-the-webpack-dev-server.md +10 -10
  17. data/docs/guides/how-react-on-rails-works.md +1 -1
  18. data/docs/guides/installation-into-an-existing-rails-app.md +4 -4
  19. data/docs/guides/rails-webpacker-react-integration-options.md +4 -4
  20. data/docs/guides/react-on-rails-overview.md +6 -7
  21. data/docs/guides/rspec-configuration.md +11 -11
  22. data/docs/guides/tutorial.md +11 -14
  23. data/docs/guides/upgrading-react-on-rails.md +2 -2
  24. data/docs/guides/webpack-configuration.md +14 -14
  25. data/docs/home.md +3 -3
  26. data/docs/javascript/asset-pipeline.md +4 -4
  27. data/docs/javascript/converting-from-custom-webpack-config-to-rails-webpacker-config.md +8 -8
  28. data/docs/javascript/server-rendering-tips.md +1 -1
  29. data/docs/javascript/troubleshooting-when-using-shakapacker.md +77 -0
  30. data/docs/outdated/rails-assets-relative-paths.md +1 -1
  31. data/docs/outdated/rails-assets.md +1 -1
  32. data/docs/react-on-rails-pro/react-on-rails-pro.md +1 -1
  33. data/lib/generators/react_on_rails/adapt_for_older_shakapacker_generator.rb +41 -0
  34. data/lib/generators/react_on_rails/base_generator.rb +3 -47
  35. data/lib/generators/react_on_rails/generator_messages.rb +40 -0
  36. data/lib/generators/react_on_rails/install_generator.rb +21 -0
  37. data/lib/generators/react_on_rails/templates/base/base/Procfile.dev +2 -2
  38. data/lib/generators/react_on_rails/templates/base/base/Procfile.dev-static +2 -2
  39. data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb +2 -2
  40. data/lib/generators/react_on_rails/templates/base/base/config/{webpacker.yml → shakapacker.yml} +3 -3
  41. data/lib/generators/react_on_rails/templates/base/base/config/webpack/commonWebpackConfig.js.tt +3 -1
  42. data/lib/react_on_rails/helper.rb +23 -11
  43. data/lib/react_on_rails/packs_generator.rb +2 -0
  44. data/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb +1 -3
  45. data/lib/react_on_rails/version.rb +1 -1
  46. data/package.json +1 -1
  47. metadata +6 -3
@@ -313,20 +313,25 @@ module ReactOnRails
313
313
  @rails_context.merge(serverSide: server_side)
314
314
  end
315
315
 
316
- def load_pack_for_generated_component(component_name)
317
- ReactOnRails::WebpackerUtils.raise_nested_entries_disabled unless ReactOnRails::WebpackerUtils.nested_entries?
316
+ def load_pack_for_generated_component(react_component_name, render_options)
317
+ return unless render_options.auto_load_bundle
318
318
 
319
- append_javascript_pack_tag("generated/#{component_name}",
319
+ ReactOnRails::WebpackerUtils.raise_nested_entries_disabled unless ReactOnRails::WebpackerUtils.nested_entries?
320
+ if Rails.env.development?
321
+ is_component_pack_present = File.exist?(generated_components_pack_path(react_component_name))
322
+ raise_missing_autoloaded_bundle(react_component_name) unless is_component_pack_present
323
+ end
324
+ append_javascript_pack_tag("generated/#{react_component_name}",
320
325
  defer: ReactOnRails.configuration.defer_generated_component_packs)
321
- append_stylesheet_pack_tag("generated/#{component_name}")
326
+ append_stylesheet_pack_tag("generated/#{react_component_name}")
322
327
  end
323
328
 
324
329
  # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity
325
330
 
326
331
  private
327
332
 
328
- def generated_components_pack_path(component_name)
329
- "#{ReactOnRails::WebpackerUtils.webpacker_source_entry_path}/generated/#{component_name}.js"
333
+ def generated_components_pack_path(react_component_name)
334
+ "#{ReactOnRails::WebpackerUtils.webpacker_source_entry_path}/generated/#{react_component_name}.js"
330
335
  end
331
336
 
332
337
  def build_react_component_result_for_server_rendered_string(
@@ -439,11 +444,7 @@ module ReactOnRails
439
444
  # Create the HTML rendering part
440
445
  result = server_rendered_react_component(render_options)
441
446
 
442
- if render_options.auto_load_bundle
443
- is_component_pack_present = File.exist?(generated_components_pack_path(react_component_name))
444
-
445
- load_pack_for_generated_component(react_component_name) if is_component_pack_present
446
- end
447
+ load_pack_for_generated_component(react_component_name, render_options)
447
448
 
448
449
  {
449
450
  render_options: render_options,
@@ -564,6 +565,17 @@ module ReactOnRails
564
565
  instrument_method :react_component, type: "ReactOnRails", name: "react_component"
565
566
  instrument_method :react_component_hash, type: "ReactOnRails", name: "react_component_hash"
566
567
  end
568
+
569
+ def raise_missing_autoloaded_bundle(react_component_name)
570
+ msg = <<~MSG
571
+ **ERROR** ReactOnRails: Component "#{react_component_name}" is configured as "auto_load_bundle: true"
572
+ but the generated component entrypoint, which should have been at #{generated_components_pack_path(react_component_name)},
573
+ is missing. You might want to check that this component is in a directory named "#{ReactOnRails.configuration.components_subdirectory}"
574
+ & that "bundle exec rake react_on_rails:generate_packs" has been run.
575
+ MSG
576
+
577
+ raise ReactOnRails::Error, msg
578
+ end
567
579
  end
568
580
  end
569
581
  # rubocop:enable Metrics/ModuleLength
@@ -13,6 +13,8 @@ module ReactOnRails
13
13
  end
14
14
 
15
15
  def generate_packs_if_stale
16
+ return unless ReactOnRails.configuration.auto_load_bundle
17
+
16
18
  are_generated_files_present_and_up_to_date = Dir.exist?(generated_packs_directory_path) &&
17
19
  File.exist?(generated_server_bundle_file_path) &&
18
20
  !stale_or_missing_packs?
@@ -113,9 +113,7 @@ module ReactOnRails
113
113
 
114
114
  def eval_js(js_code, _render_options)
115
115
  @js_context_pool.with do |js_context|
116
- result = js_context.eval(js_code)
117
- js_context.eval("console.history = []")
118
- result
116
+ js_context.eval(js_code)
119
117
  end
120
118
  end
121
119
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ReactOnRails
4
- VERSION = "13.3.5"
4
+ VERSION = "13.4.0"
5
5
  end
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-on-rails",
3
- "version": "13.3.5",
3
+ "version": "13.4.0",
4
4
  "description": "react-on-rails JavaScript for react_on_rails Ruby gem",
5
5
  "main": "node_package/lib/ReactOnRails.js",
6
6
  "directories": {
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: react_on_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 13.3.5
4
+ version: 13.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Gordon
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-06-01 00:00:00.000000000 Z
11
+ date: 2023-07-31 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -157,6 +157,7 @@ files:
157
157
  - docs/additional-details/manual-installation-overview.md
158
158
  - docs/additional-details/migrating-from-react-rails.md
159
159
  - docs/additional-details/recommended-project-structure.md
160
+ - docs/additional-details/tips-for-usage-with-sp6.md
160
161
  - docs/additional-details/updating-dependencies.md
161
162
  - docs/additional-details/upgrade-webpacker-v3-to-v4.md
162
163
  - docs/api/javascript-api.md
@@ -203,6 +204,7 @@ files:
203
204
  - docs/javascript/react-helmet.md
204
205
  - docs/javascript/react-router.md
205
206
  - docs/javascript/server-rendering-tips.md
207
+ - docs/javascript/troubleshooting-when-using-shakapacker.md
206
208
  - docs/javascript/troubleshooting-when-using-webpacker.md
207
209
  - docs/javascript/webpack-v1-notes.md
208
210
  - docs/javascript/webpack.md
@@ -225,6 +227,7 @@ files:
225
227
  - docs/testimonials/testimonials.md
226
228
  - jest.config.js
227
229
  - lib/generators/USAGE
230
+ - lib/generators/react_on_rails/adapt_for_older_shakapacker_generator.rb
228
231
  - lib/generators/react_on_rails/base_generator.rb
229
232
  - lib/generators/react_on_rails/bin/dev
230
233
  - lib/generators/react_on_rails/bin/dev-static
@@ -247,6 +250,7 @@ files:
247
250
  - lib/generators/react_on_rails/templates/base/base/app/views/layouts/hello_world.html.erb
248
251
  - lib/generators/react_on_rails/templates/base/base/babel.config.js.tt
249
252
  - lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb
253
+ - lib/generators/react_on_rails/templates/base/base/config/shakapacker.yml
250
254
  - lib/generators/react_on_rails/templates/base/base/config/webpack/clientWebpackConfig.js.tt
251
255
  - lib/generators/react_on_rails/templates/base/base/config/webpack/commonWebpackConfig.js.tt
252
256
  - lib/generators/react_on_rails/templates/base/base/config/webpack/development.js.tt
@@ -255,7 +259,6 @@ files:
255
259
  - lib/generators/react_on_rails/templates/base/base/config/webpack/test.js.tt
256
260
  - lib/generators/react_on_rails/templates/base/base/config/webpack/webpack.config.js.tt
257
261
  - lib/generators/react_on_rails/templates/base/base/config/webpack/webpackConfig.js.tt
258
- - lib/generators/react_on_rails/templates/base/base/config/webpacker.yml
259
262
  - lib/generators/react_on_rails/templates/dev_tests/.eslintrc
260
263
  - lib/generators/react_on_rails/templates/dev_tests/.rspec
261
264
  - lib/generators/react_on_rails/templates/dev_tests/spec/rails_helper.rb