react_on_rails 12.2.0 → 12.5.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.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +12 -10
  3. data/.rubocop.yml +2 -1
  4. data/CHANGELOG.md +44 -17
  5. data/Gemfile.development_dependencies +3 -2
  6. data/NEWS.md +9 -3
  7. data/REACT-ON-RAILS-PRO-LICENSE +1 -1
  8. data/README.md +31 -317
  9. data/Rakefile +1 -1
  10. data/SUMMARY.md +21 -12
  11. data/docs/additional-details/generator-details.md +1 -1
  12. data/docs/additional-details/manual-installation-overview.md +2 -2
  13. data/docs/api/view-helpers-api.md +4 -4
  14. data/docs/contributor-info/linters.md +1 -1
  15. data/docs/contributor-info/pull-requests.md +1 -1
  16. data/docs/deployment/heroku-deployment.md +16 -5
  17. data/docs/{basics → guides}/client-vs-server-rendering.md +1 -1
  18. data/docs/{basics → guides}/configuration.md +11 -9
  19. data/docs/{basics → guides}/deployment.md +1 -1
  20. data/docs/guides/getting-started.md +183 -0
  21. data/docs/{basics → guides}/hmr-and-hot-reloading-with-the-webpack-dev-server.md +0 -0
  22. data/docs/{basics → guides}/how-react-on-rails-works.md +3 -2
  23. data/docs/guides/how-to-conditionally-server-render-based-on-device-type.md +39 -0
  24. data/docs/guides/how-to-use-different-files-for-client-and-server-rendering.md +98 -0
  25. data/docs/{basics → guides}/i18n.md +0 -0
  26. data/docs/{basics → guides}/installation-into-an-existing-rails-app.md +3 -3
  27. data/docs/{basics → guides}/minitest-configuration.md +0 -0
  28. data/docs/{rails-webpacker-react-integration-options.md → guides/rails-webpacker-react-integration-options.md} +1 -1
  29. data/docs/guides/react-on-rails-overview.md +30 -0
  30. data/docs/{basics → guides}/react-server-rendering.md +2 -2
  31. data/docs/{basics → guides}/render-functions-and-railscontext.md +0 -0
  32. data/docs/{basics → guides}/rspec-configuration.md +2 -2
  33. data/docs/{basics → guides}/tutorial.md +20 -18
  34. data/docs/{basics → guides}/upgrading-react-on-rails.md +1 -1
  35. data/docs/{basics → guides}/webpack-configuration.md +1 -1
  36. data/docs/home.md +19 -378
  37. data/docs/javascript/code-splitting.md +2 -2
  38. data/docs/misc/articles.md +1 -1
  39. data/docs/misc/doctrine.md +3 -3
  40. data/docs/outdated/rails-assets-relative-paths.md +2 -2
  41. data/docs/outdated/rails-assets.md +1 -1
  42. data/docs/rails/convert-rails-5-api-only-app.md +1 -1
  43. data/docs/rails/rails-engine-integration.md +3 -12
  44. data/docs/rails/turbolinks.md +13 -1
  45. data/docs/react-on-rails-pro/react-on-rails-pro.md +43 -0
  46. data/docs/testimonials/testimonials.md +4 -4
  47. data/lib/generators/react_on_rails/base_generator.rb +47 -4
  48. data/lib/generators/react_on_rails/generator_helper.rb +4 -0
  49. data/lib/generators/react_on_rails/templates/.eslintrc +3 -1
  50. data/lib/generators/react_on_rails/templates/base/base/Procfile.dev +4 -8
  51. data/lib/generators/react_on_rails/templates/base/base/Procfile.dev-static +9 -0
  52. data/lib/generators/react_on_rails/templates/base/base/app/javascript/bundles/HelloWorld/components/HelloWorld.jsx +2 -1
  53. data/lib/generators/react_on_rails/templates/base/base/app/javascript/bundles/HelloWorld/components/HelloWorld.module.css +4 -0
  54. data/lib/generators/react_on_rails/templates/base/base/app/javascript/bundles/HelloWorld/components/HelloWorldServer.js +5 -0
  55. data/lib/generators/react_on_rails/templates/base/base/app/javascript/packs/server-bundle.js +8 -0
  56. data/lib/generators/react_on_rails/templates/base/base/app/views/layouts/hello_world.html.erb +1 -0
  57. data/lib/generators/react_on_rails/templates/base/base/babel.config.js.tt +15 -0
  58. data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb +1 -1
  59. data/lib/generators/react_on_rails/templates/base/base/config/webpack/clientWebpackConfig.js.tt +17 -0
  60. data/lib/generators/react_on_rails/templates/base/base/config/webpack/commonWebpackConfig.js.tt +15 -0
  61. data/lib/generators/react_on_rails/templates/base/base/config/webpack/development.js.tt +27 -0
  62. data/lib/generators/react_on_rails/templates/base/base/config/webpack/production.js.tt +11 -0
  63. data/lib/generators/react_on_rails/templates/base/base/config/webpack/serverWebpackConfig.js.tt +117 -0
  64. data/lib/generators/react_on_rails/templates/base/base/config/webpack/webpackConfig.js.tt +36 -0
  65. data/lib/generators/react_on_rails/templates/base/base/config/webpacker.yml +62 -0
  66. data/lib/generators/react_on_rails/templates/redux/base/app/javascript/bundles/HelloWorld/components/HelloWorld.jsx +2 -1
  67. data/lib/react_on_rails/helper.rb +6 -0
  68. data/lib/react_on_rails/locales/base.rb +7 -9
  69. data/lib/react_on_rails/server_rendering_js_code.rb +13 -0
  70. data/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb +9 -0
  71. data/lib/react_on_rails/version.rb +1 -1
  72. data/lib/tasks/assets.rake +8 -7
  73. data/package.json +1 -1
  74. data/rakelib/example_type.rb +5 -1
  75. data/rakelib/examples.rake +7 -2
  76. data/rakelib/release.rake +1 -1
  77. data/rakelib/task_helpers.rb +7 -0
  78. data/react_on_rails.gemspec +1 -1
  79. metadata +35 -19
  80. data/lib/generators/react_on_rails/templates/base/base/Procfile.dev-hmr +0 -26
@@ -52,7 +52,11 @@ module ReactOnRails
52
52
  attr_writer :rails_options
53
53
 
54
54
  def rails_options
55
- @rails_options ||= "--skip-bundle --skip-spring --skip-git --skip-test-unit --skip-active-record"
55
+ @rails_options ||= if ReactOnRails::Utils.rails_version_less_than("7.0")
56
+ "--skip-bundle --skip-spring --skip-git --skip-test-unit --skip-active-record -J"
57
+ else
58
+ "--skip-bundle --skip-spring --skip-git --skip-test-unit --skip-active-record -j webpack"
59
+ end
56
60
  end
57
61
 
58
62
  %w[gen clobber npm_install build_webpack_bundles].each do |task_type|
@@ -30,12 +30,17 @@ namespace :examples do # rubocop:disable Metrics/BlockLength
30
30
  desc "Generates #{example_type.name_pretty}"
31
31
  task example_type.gen_task_name_short => example_type.clobber_task_name do
32
32
  mkdir_p(example_type.dir)
33
- example_type.rails_options += " --webpack" if Rails.version >= "5.1" && Rails.version < "6"
33
+ if Rails::VERSION::MAJOR < 6
34
+ example_type.rails_options += " --webpack"
35
+ elsif Rails::VERSION::MAJOR >= 7
36
+ example_type.rails_options += "--javascript=webpack"
37
+ end
34
38
  sh_in_dir(examples_dir, "rails new #{example_type.name} #{example_type.rails_options}")
35
39
  sh_in_dir(example_type.dir, "touch .gitignore")
40
+ copy_generator_webpacker_yml_to(example_type.dir)
41
+ sh_in_dir(example_type.dir, "bundle add webpacker --version 6.0.0.rc.6")
36
42
  sh_in_dir(example_type.dir, "rake webpacker:install")
37
43
  sh_in_dir(example_type.dir, "bundle binstubs --path=#{example_type.dir}/bin webpacker")
38
- sh_in_dir(example_type.dir, "rake webpacker:install:react")
39
44
  append_to_gemfile(example_type.gemfile, example_type.required_gems)
40
45
  bundle_install_in(example_type.dir)
41
46
  sh_in_dir(example_type.dir, example_type.generator_shell_commands)
data/rakelib/release.rake CHANGED
@@ -60,7 +60,7 @@ task :release, %i[gem_version dry_run tools_install] do |_t, args|
60
60
  # Will bump the yarn version, commit, tag the commit, push to repo, and release on yarn
61
61
  release_it_command = +"release-it"
62
62
  release_it_command << " #{npm_version}" unless npm_version.strip.empty?
63
- release_it_command << " --non-interactive --npm.publish --no-git.requireCleanWorkingDir"
63
+ release_it_command << " --npm.publish --no-git.requireCleanWorkingDir"
64
64
  release_it_command << " --dry-run --verbose" if is_dry_run
65
65
  sh_in_dir(gem_root, release_it_command)
66
66
 
@@ -12,6 +12,13 @@ module ReactOnRails
12
12
  File.join(gem_root, "gen-examples", "examples")
13
13
  end
14
14
 
15
+ # This method is used to prevent an error that when installing webpacker 6.0.0.rc.6
16
+ # without a previous config/webpacker.yml will throw and error
17
+ def copy_generator_webpacker_yml_to(destination)
18
+ webpacker_file = File.join(gem_root, "lib/generators/react_on_rails/templates/base/base/config/webpacker.yml")
19
+ sh %( cp #{webpacker_file} #{destination}/config/webpacker.yml )
20
+ end
21
+
15
22
  def dummy_app_dir
16
23
  File.join(gem_root, "spec/dummy")
17
24
  end
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
23
23
  s.executables = s.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
24
  s.require_paths = ["lib"]
25
25
 
26
- s.required_ruby_version = ">= 2.5.0"
26
+ s.required_ruby_version = ">= 2.7.0"
27
27
 
28
28
  s.add_dependency "addressable"
29
29
  s.add_dependency "connection_pool"
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: 12.2.0
4
+ version: 12.5.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: 2021-03-25 00:00:00.000000000 Z
11
+ date: 2021-12-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -173,20 +173,6 @@ files:
173
173
  - docs/api/javascript-api.md
174
174
  - docs/api/redux-store-api.md
175
175
  - docs/api/view-helpers-api.md
176
- - docs/basics/client-vs-server-rendering.md
177
- - docs/basics/configuration.md
178
- - docs/basics/deployment.md
179
- - docs/basics/hmr-and-hot-reloading-with-the-webpack-dev-server.md
180
- - docs/basics/how-react-on-rails-works.md
181
- - docs/basics/i18n.md
182
- - docs/basics/installation-into-an-existing-rails-app.md
183
- - docs/basics/minitest-configuration.md
184
- - docs/basics/react-server-rendering.md
185
- - docs/basics/render-functions-and-railscontext.md
186
- - docs/basics/rspec-configuration.md
187
- - docs/basics/tutorial.md
188
- - docs/basics/upgrading-react-on-rails.md
189
- - docs/basics/webpack-configuration.md
190
176
  - docs/contributor-info/errors-with-hooks.md
191
177
  - docs/contributor-info/generator-testing.md
192
178
  - docs/contributor-info/linters.md
@@ -194,6 +180,25 @@ files:
194
180
  - docs/contributor-info/releasing.md
195
181
  - docs/deployment/elastic-beanstalk.md
196
182
  - docs/deployment/heroku-deployment.md
183
+ - docs/guides/client-vs-server-rendering.md
184
+ - docs/guides/configuration.md
185
+ - docs/guides/deployment.md
186
+ - docs/guides/getting-started.md
187
+ - docs/guides/hmr-and-hot-reloading-with-the-webpack-dev-server.md
188
+ - docs/guides/how-react-on-rails-works.md
189
+ - docs/guides/how-to-conditionally-server-render-based-on-device-type.md
190
+ - docs/guides/how-to-use-different-files-for-client-and-server-rendering.md
191
+ - docs/guides/i18n.md
192
+ - docs/guides/installation-into-an-existing-rails-app.md
193
+ - docs/guides/minitest-configuration.md
194
+ - docs/guides/rails-webpacker-react-integration-options.md
195
+ - docs/guides/react-on-rails-overview.md
196
+ - docs/guides/react-server-rendering.md
197
+ - docs/guides/render-functions-and-railscontext.md
198
+ - docs/guides/rspec-configuration.md
199
+ - docs/guides/tutorial.md
200
+ - docs/guides/upgrading-react-on-rails.md
201
+ - docs/guides/webpack-configuration.md
197
202
  - docs/home.md
198
203
  - docs/javascript/angular-js-integration-migration.md
199
204
  - docs/javascript/asset-pipeline.md
@@ -220,11 +225,11 @@ files:
220
225
  - docs/outdated/rails-assets-relative-paths.md
221
226
  - docs/outdated/rails-assets.md
222
227
  - docs/outdated/rails3.md
223
- - docs/rails-webpacker-react-integration-options.md
224
228
  - docs/rails/convert-rails-5-api-only-app.md
225
229
  - docs/rails/rails-engine-integration.md
226
230
  - docs/rails/rails_view_rendering_from_inline_javascript.md
227
231
  - docs/rails/turbolinks.md
232
+ - docs/react-on-rails-pro/react-on-rails-pro.md
228
233
  - docs/testimonials/hvmn.md
229
234
  - docs/testimonials/resortpass.md
230
235
  - docs/testimonials/testimonials.md
@@ -239,13 +244,24 @@ files:
239
244
  - lib/generators/react_on_rails/react_with_redux_generator.rb
240
245
  - lib/generators/react_on_rails/templates/.eslintrc
241
246
  - lib/generators/react_on_rails/templates/base/base/Procfile.dev
242
- - lib/generators/react_on_rails/templates/base/base/Procfile.dev-hmr
247
+ - lib/generators/react_on_rails/templates/base/base/Procfile.dev-static
243
248
  - lib/generators/react_on_rails/templates/base/base/app/controllers/hello_world_controller.rb
244
249
  - lib/generators/react_on_rails/templates/base/base/app/javascript/bundles/HelloWorld/components/HelloWorld.jsx
250
+ - lib/generators/react_on_rails/templates/base/base/app/javascript/bundles/HelloWorld/components/HelloWorld.module.css
251
+ - lib/generators/react_on_rails/templates/base/base/app/javascript/bundles/HelloWorld/components/HelloWorldServer.js
245
252
  - lib/generators/react_on_rails/templates/base/base/app/javascript/packs/registration.js.tt
253
+ - lib/generators/react_on_rails/templates/base/base/app/javascript/packs/server-bundle.js
246
254
  - lib/generators/react_on_rails/templates/base/base/app/views/hello_world/index.html.erb.tt
247
255
  - lib/generators/react_on_rails/templates/base/base/app/views/layouts/hello_world.html.erb
256
+ - lib/generators/react_on_rails/templates/base/base/babel.config.js.tt
248
257
  - lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb
258
+ - lib/generators/react_on_rails/templates/base/base/config/webpack/clientWebpackConfig.js.tt
259
+ - lib/generators/react_on_rails/templates/base/base/config/webpack/commonWebpackConfig.js.tt
260
+ - lib/generators/react_on_rails/templates/base/base/config/webpack/development.js.tt
261
+ - lib/generators/react_on_rails/templates/base/base/config/webpack/production.js.tt
262
+ - lib/generators/react_on_rails/templates/base/base/config/webpack/serverWebpackConfig.js.tt
263
+ - lib/generators/react_on_rails/templates/base/base/config/webpack/webpackConfig.js.tt
264
+ - lib/generators/react_on_rails/templates/base/base/config/webpacker.yml
249
265
  - lib/generators/react_on_rails/templates/dev_tests/.eslintrc
250
266
  - lib/generators/react_on_rails/templates/dev_tests/.rspec
251
267
  - lib/generators/react_on_rails/templates/dev_tests/spec/rails_helper.rb
@@ -325,7 +341,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
325
341
  requirements:
326
342
  - - ">="
327
343
  - !ruby/object:Gem::Version
328
- version: 2.5.0
344
+ version: 2.7.0
329
345
  required_rubygems_version: !ruby/object:Gem::Requirement
330
346
  requirements:
331
347
  - - ">="
@@ -1,26 +0,0 @@
1
- # Procfile for development using HMR
2
-
3
- web: rails s -p 3000
4
-
5
- # Note, hot and live reloading don't work with the default generator setup on
6
- # top of the rails/webpacker Webpack config with server rendering.
7
- # If you have server rendering enabled (prerender is true), you either need to
8
- # a. Ensure that you have dev_server.hmr and dev_server.inline BOTH set to false,
9
- # and you have this option in your config/initializers/react_on_rails.rb:
10
- # config.same_bundle_for_client_and_server = true
11
- # If you have either config/webpacker.yml option set to true, you'll see errors like
12
- # "ReferenceError: window is not defined" (if hmr is true)
13
- # "TypeError: Cannot read property 'prototype' of undefined" (if inline is true)
14
- # b. Skip using the webpack-dev-server. bin/webpack --watch is typically
15
- fast enough.
16
- # c. See the React on Rails README for a link to documentation for how to setup
17
- # SSR with HMR and React hot loading using the webpack-dev-server only for the
18
- # client bundles and a static file for the server bundle.
19
-
20
- # Run the webpack-dev-server for client and maybe server files
21
- webpack-dev-server: bin/webpack-dev-server
22
-
23
- # Keep the JS fresh for server rendering. Remove if not server rendering.
24
- # Especially if you have not configured generation of a server bundle without a hash.
25
- # as that will conflict with the manifest created by the bin/webpack-dev-server
26
- # rails-server-assets: SERVER_BUNDLE_ONLY=yes bin/webpack --watch