react_on_rails 11.3.0 → 12.0.0.pre.beta.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +320 -0
- data/.eslintignore +2 -1
- data/.eslintrc +23 -1
- data/.github/FUNDING.yml +1 -0
- data/.gitignore +3 -1
- data/.prettierignore +10 -1
- data/.prettierrc +3 -0
- data/.rubocop.yml +37 -11
- data/.travis.yml +9 -22
- data/CHANGELOG.md +65 -6
- data/CONTRIBUTING.md +60 -71
- data/Gemfile +3 -4
- data/{COMM-LICENSE → REACT-ON-RAILS-PRO-LICENSE} +6 -9
- data/README.md +129 -92
- data/Rakefile +0 -7
- data/SUMMARY.md +7 -11
- data/book.json +5 -5
- data/docs/additional-reading/asset-pipeline.md +8 -16
- 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 +12 -7
- data/docs/api/javascript-api.md +3 -3
- data/docs/api/redux-store-api.md +4 -2
- data/docs/api/view-helpers-api.md +6 -7
- data/docs/basics/configuration.md +83 -69
- data/docs/basics/deployment.md +2 -4
- 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 +4 -9
- data/docs/basics/react-server-rendering.md +1 -1
- data/docs/basics/recommended-project-structure.md +5 -22
- data/docs/basics/{generator-functions-and-railscontext.md → render-functions-and-railscontext.md} +59 -21
- data/docs/basics/rspec-configuration.md +27 -16
- data/docs/basics/upgrading-react-on-rails.md +58 -2
- data/docs/basics/webpack-configuration.md +18 -8
- data/docs/contributor-info/errors-with-hooks.md +45 -0
- data/docs/contributor-info/pull-requests.md +44 -0
- data/docs/misc/doctrine.md +1 -1
- data/docs/{misc-pending → outdated}/code-splitting.md +12 -8
- data/docs/{basics → outdated}/how-react-on-rails-works.md +8 -4
- data/docs/{misc-pending → outdated}/manual-installation-overview.md +5 -5
- data/docs/{additional-reading → outdated}/rails-assets-relative-paths.md +3 -3
- data/docs/{misc-pending → outdated}/rails-assets.md +2 -12
- data/docs/{misc → outdated}/rails3.md +0 -0
- data/docs/tutorial.md +94 -68
- data/jest.config.js +4 -0
- data/lib/generators/react_on_rails/base_generator.rb +2 -2
- data/lib/generators/react_on_rails/dev_tests_generator.rb +1 -1
- data/lib/generators/react_on_rails/generator_helper.rb +4 -6
- 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.rb +3 -1
- data/lib/react_on_rails/configuration.rb +58 -28
- data/lib/react_on_rails/error.rb +2 -0
- data/lib/react_on_rails/helper.rb +41 -91
- data/lib/react_on_rails/json_parse_error.rb +2 -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 +11 -15
- data/lib/react_on_rails/server_rendering_pool/ruby_embedded_java_script.rb +41 -46
- 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/utils.rb +14 -19
- data/lib/react_on_rails/version.rb +1 -1
- data/lib/react_on_rails/version_checker.rb +1 -0
- data/lib/react_on_rails/webpacker_utils.rb +19 -2
- data/lib/tasks/assets.rake +33 -46
- data/lib/tasks/locale.rake +4 -2
- data/package-scripts.yml +11 -8
- data/package.json +29 -28
- 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 +0 -6
- data/rakelib/run_rspec.rake +5 -18
- data/react_on_rails.gemspec +4 -5
- data/tsconfig.json +14 -0
- data/webpackConfigLoader.js +3 -2
- data/yarn.lock +4333 -2209
- metadata +46 -57
- data/Gemfile.rails32 +0 -73
- data/docs/additional-reading/babel.md +0 -5
- data/docs/additional-reading/heroku-deployment.md +0 -92
- data/docs/additional-reading/hot-reloading-rails-development-asset-pipeline.md +0 -47
- data/docs/api/ruby-api-hot-reload-view-helpers.md +0 -44
- data/lib/generators/react_on_rails/templates/base/base/Procfile.dev-server +0 -12
- data/lib/react_on_rails/assets_precompile.rb +0 -153
- data/lib/react_on_rails/locales_to_js.rb +0 -138
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:
|
4
|
+
version: 12.0.0.pre.beta.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Gordon
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-07-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '3.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: webpacker
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '4.0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '4.0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
98
|
name: awesome_print
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,14 +114,14 @@ dependencies:
|
|
100
114
|
requirements:
|
101
115
|
- - "~>"
|
102
116
|
- !ruby/object:Gem::Version
|
103
|
-
version: '
|
117
|
+
version: '2'
|
104
118
|
type: :development
|
105
119
|
prerelease: false
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
107
121
|
requirements:
|
108
122
|
- - "~>"
|
109
123
|
- !ruby/object:Gem::Version
|
110
|
-
version: '
|
124
|
+
version: '2'
|
111
125
|
- !ruby/object:Gem::Dependency
|
112
126
|
name: coveralls
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -220,20 +234,6 @@ dependencies:
|
|
220
234
|
- - ">="
|
221
235
|
- !ruby/object:Gem::Version
|
222
236
|
version: '0'
|
223
|
-
- !ruby/object:Gem::Dependency
|
224
|
-
name: pry-stack_explorer
|
225
|
-
requirement: !ruby/object:Gem::Requirement
|
226
|
-
requirements:
|
227
|
-
- - ">="
|
228
|
-
- !ruby/object:Gem::Version
|
229
|
-
version: '0'
|
230
|
-
type: :development
|
231
|
-
prerelease: false
|
232
|
-
version_requirements: !ruby/object:Gem::Requirement
|
233
|
-
requirements:
|
234
|
-
- - ">="
|
235
|
-
- !ruby/object:Gem::Version
|
236
|
-
version: '0'
|
237
237
|
- !ruby/object:Gem::Dependency
|
238
238
|
name: pry-state
|
239
239
|
requirement: !ruby/object:Gem::Requirement
|
@@ -248,20 +248,6 @@ dependencies:
|
|
248
248
|
- - ">="
|
249
249
|
- !ruby/object:Gem::Version
|
250
250
|
version: '0'
|
251
|
-
- !ruby/object:Gem::Dependency
|
252
|
-
name: pry-toys
|
253
|
-
requirement: !ruby/object:Gem::Requirement
|
254
|
-
requirements:
|
255
|
-
- - ">="
|
256
|
-
- !ruby/object:Gem::Version
|
257
|
-
version: '0'
|
258
|
-
type: :development
|
259
|
-
prerelease: false
|
260
|
-
version_requirements: !ruby/object:Gem::Requirement
|
261
|
-
requirements:
|
262
|
-
- - ">="
|
263
|
-
- !ruby/object:Gem::Version
|
264
|
-
version: '0'
|
265
251
|
- !ruby/object:Gem::Dependency
|
266
252
|
name: rails
|
267
253
|
requirement: !ruby/object:Gem::Requirement
|
@@ -308,16 +294,16 @@ dependencies:
|
|
308
294
|
name: rubocop
|
309
295
|
requirement: !ruby/object:Gem::Requirement
|
310
296
|
requirements:
|
311
|
-
- -
|
297
|
+
- - '='
|
312
298
|
- !ruby/object:Gem::Version
|
313
|
-
version: 0.
|
299
|
+
version: 0.85.0
|
314
300
|
type: :development
|
315
301
|
prerelease: false
|
316
302
|
version_requirements: !ruby/object:Gem::Requirement
|
317
303
|
requirements:
|
318
|
-
- -
|
304
|
+
- - '='
|
319
305
|
- !ruby/object:Gem::Version
|
320
|
-
version: 0.
|
306
|
+
version: 0.85.0
|
321
307
|
description: See README.md
|
322
308
|
email:
|
323
309
|
- justin@shakacode.com
|
@@ -326,10 +312,12 @@ extensions: []
|
|
326
312
|
extra_rdoc_files: []
|
327
313
|
files:
|
328
314
|
- ".bookignore"
|
315
|
+
- ".circleci/config.yml"
|
329
316
|
- ".coveralls.yml"
|
330
317
|
- ".dockerignore"
|
331
318
|
- ".eslintignore"
|
332
319
|
- ".eslintrc"
|
320
|
+
- ".github/FUNDING.yml"
|
333
321
|
- ".gitignore"
|
334
322
|
- ".npmignore"
|
335
323
|
- ".prettierignore"
|
@@ -340,15 +328,14 @@ files:
|
|
340
328
|
- ".scss-lint.yml"
|
341
329
|
- ".travis.yml"
|
342
330
|
- CHANGELOG.md
|
343
|
-
- COMM-LICENSE
|
344
331
|
- CONTRIBUTING.md
|
345
332
|
- Dockerfile_tests
|
346
333
|
- Gemfile
|
347
|
-
- Gemfile.rails32
|
348
334
|
- KUDOS.md
|
349
335
|
- LICENSE.md
|
350
336
|
- NEWS.md
|
351
337
|
- PROJECTS.md
|
338
|
+
- REACT-ON-RAILS-PRO-LICENSE
|
352
339
|
- README.md
|
353
340
|
- Rakefile
|
354
341
|
- SUMMARY.md
|
@@ -357,17 +344,13 @@ files:
|
|
357
344
|
- docker-compose.yml
|
358
345
|
- docs/additional-reading/angular-js-integration-migration.md
|
359
346
|
- docs/additional-reading/asset-pipeline.md
|
360
|
-
- docs/additional-reading/babel.md
|
361
347
|
- docs/additional-reading/capistrano-deployment.md
|
362
348
|
- docs/additional-reading/convert-rails-5-api-only-app.md
|
363
349
|
- docs/additional-reading/credits.md
|
364
350
|
- docs/additional-reading/elastic-beanstalk.md
|
365
351
|
- docs/additional-reading/foreman-issues.md
|
366
|
-
- docs/additional-reading/heroku-deployment.md
|
367
|
-
- docs/additional-reading/hot-reloading-rails-development-asset-pipeline.md
|
368
352
|
- docs/additional-reading/images.md
|
369
353
|
- docs/additional-reading/node-dependencies-and-npm.md
|
370
|
-
- docs/additional-reading/rails-assets-relative-paths.md
|
371
354
|
- docs/additional-reading/rails-engine-integration.md
|
372
355
|
- docs/additional-reading/rails_view_rendering_from_inline_javascript.md
|
373
356
|
- docs/additional-reading/react-and-redux.md
|
@@ -384,38 +367,43 @@ files:
|
|
384
367
|
- docs/additional-reading/webpack.md
|
385
368
|
- docs/api/javascript-api.md
|
386
369
|
- docs/api/redux-store-api.md
|
387
|
-
- docs/api/ruby-api-hot-reload-view-helpers.md
|
388
370
|
- docs/api/view-helpers-api.md
|
389
371
|
- docs/articles.md
|
390
372
|
- docs/basics/client-vs-server-rendering.md
|
391
373
|
- docs/basics/configuration.md
|
392
374
|
- docs/basics/deployment.md
|
393
375
|
- docs/basics/generator-details.md
|
394
|
-
- docs/basics/
|
395
|
-
- docs/basics/
|
376
|
+
- docs/basics/heroku-deployment.md
|
377
|
+
- docs/basics/hmr-and-hot-reloading-with-the-webpack-dev-server.md
|
396
378
|
- docs/basics/i18n.md
|
397
379
|
- docs/basics/installation-into-an-existing-rails-app.md
|
398
380
|
- docs/basics/migrating-from-react-rails.md
|
399
381
|
- docs/basics/minitest-configuration.md
|
400
382
|
- docs/basics/react-server-rendering.md
|
401
383
|
- docs/basics/recommended-project-structure.md
|
384
|
+
- docs/basics/render-functions-and-railscontext.md
|
402
385
|
- docs/basics/rspec-configuration.md
|
403
386
|
- docs/basics/upgrading-react-on-rails.md
|
404
387
|
- docs/basics/webpack-configuration.md
|
405
388
|
- docs/coding-style/style.md
|
389
|
+
- docs/contributor-info/errors-with-hooks.md
|
406
390
|
- docs/contributor-info/generator-testing.md
|
407
391
|
- docs/contributor-info/linters.md
|
392
|
+
- docs/contributor-info/pull-requests.md
|
408
393
|
- docs/contributor-info/releasing.md
|
409
|
-
- docs/misc-pending/code-splitting.md
|
410
|
-
- docs/misc-pending/manual-installation-overview.md
|
411
|
-
- docs/misc-pending/rails-assets.md
|
412
394
|
- docs/misc/code_of_conduct.md
|
413
395
|
- docs/misc/doctrine.md
|
414
|
-
- docs/
|
396
|
+
- docs/outdated/code-splitting.md
|
397
|
+
- docs/outdated/how-react-on-rails-works.md
|
398
|
+
- docs/outdated/manual-installation-overview.md
|
399
|
+
- docs/outdated/rails-assets-relative-paths.md
|
400
|
+
- docs/outdated/rails-assets.md
|
401
|
+
- docs/outdated/rails3.md
|
415
402
|
- docs/testimonials/hvmn.md
|
416
403
|
- docs/testimonials/resortpass.md
|
417
404
|
- docs/testimonials/testimonials.md
|
418
405
|
- docs/tutorial.md
|
406
|
+
- jest.config.js
|
419
407
|
- lib/generators/USAGE
|
420
408
|
- lib/generators/react_on_rails/base_generator.rb
|
421
409
|
- lib/generators/react_on_rails/dev_tests_generator.rb
|
@@ -426,7 +414,7 @@ files:
|
|
426
414
|
- lib/generators/react_on_rails/react_with_redux_generator.rb
|
427
415
|
- lib/generators/react_on_rails/templates/.eslintrc
|
428
416
|
- lib/generators/react_on_rails/templates/base/base/Procfile.dev
|
429
|
-
- lib/generators/react_on_rails/templates/base/base/Procfile.dev-
|
417
|
+
- lib/generators/react_on_rails/templates/base/base/Procfile.dev-hmr
|
430
418
|
- lib/generators/react_on_rails/templates/base/base/app/controllers/hello_world_controller.rb
|
431
419
|
- lib/generators/react_on_rails/templates/base/base/app/javascript/bundles/HelloWorld/components/HelloWorld.jsx
|
432
420
|
- lib/generators/react_on_rails/templates/base/base/app/javascript/packs/registration.js.tt
|
@@ -447,7 +435,6 @@ files:
|
|
447
435
|
- lib/generators/react_on_rails/templates/redux/base/app/javascript/bundles/HelloWorld/startup/HelloWorldApp.jsx
|
448
436
|
- lib/generators/react_on_rails/templates/redux/base/app/javascript/bundles/HelloWorld/store/helloWorldStore.js
|
449
437
|
- lib/react_on_rails.rb
|
450
|
-
- lib/react_on_rails/assets_precompile.rb
|
451
438
|
- lib/react_on_rails/configuration.rb
|
452
439
|
- lib/react_on_rails/controller.rb
|
453
440
|
- lib/react_on_rails/engine.rb
|
@@ -456,7 +443,9 @@ files:
|
|
456
443
|
- lib/react_on_rails/helper.rb
|
457
444
|
- lib/react_on_rails/json_output.rb
|
458
445
|
- lib/react_on_rails/json_parse_error.rb
|
459
|
-
- lib/react_on_rails/
|
446
|
+
- lib/react_on_rails/locales/base.rb
|
447
|
+
- lib/react_on_rails/locales/to_js.rb
|
448
|
+
- lib/react_on_rails/locales/to_json.rb
|
460
449
|
- lib/react_on_rails/prerender_error.rb
|
461
450
|
- lib/react_on_rails/react_component/render_options.rb
|
462
451
|
- lib/react_on_rails/server_rendering_js_code.rb
|
@@ -491,6 +480,7 @@ files:
|
|
491
480
|
- script/release
|
492
481
|
- script/setup
|
493
482
|
- script/test
|
483
|
+
- tsconfig.json
|
494
484
|
- webpackConfigLoader.js
|
495
485
|
- yarn.lock
|
496
486
|
homepage: https://github.com/shakacode/react_on_rails
|
@@ -510,15 +500,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
510
500
|
requirements:
|
511
501
|
- - ">="
|
512
502
|
- !ruby/object:Gem::Version
|
513
|
-
version: 2.
|
503
|
+
version: 2.5.0
|
514
504
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
515
505
|
requirements:
|
516
|
-
- - "
|
506
|
+
- - ">"
|
517
507
|
- !ruby/object:Gem::Version
|
518
|
-
version:
|
508
|
+
version: 1.3.1
|
519
509
|
requirements: []
|
520
|
-
|
521
|
-
rubygems_version: 2.7.9
|
510
|
+
rubygems_version: 3.0.8
|
522
511
|
signing_key:
|
523
512
|
specification_version: 4
|
524
513
|
summary: Rails with react server rendering with webpack.
|
data/Gemfile.rails32
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
source "https://rubygems.org"
|
4
|
-
|
5
|
-
eval_gemfile File.expand_path("../react_on_rails.gemspec", __FILE__)
|
6
|
-
|
7
|
-
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
|
8
|
-
gem "rails", "~> 3.2"
|
9
|
-
# Use sqlite3 as the database for Active Record
|
10
|
-
gem "sqlite3"
|
11
|
-
# Use SCSS for stylesheets
|
12
|
-
gem "sass-rails"
|
13
|
-
# Use Uglifier as compressor for JavaScript assets
|
14
|
-
gem "uglifier"
|
15
|
-
# Use CoffeeScript for .coffee assets and views
|
16
|
-
gem "coffee-rails"
|
17
|
-
|
18
|
-
# Use jquery as the JavaScript library
|
19
|
-
gem "jquery-rails"
|
20
|
-
|
21
|
-
gem "puma"
|
22
|
-
|
23
|
-
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
|
24
|
-
gem "jbuilder"
|
25
|
-
# bundle exec rake doc:rails generates the API under doc/api.
|
26
|
-
gem "sdoc", group: :doc
|
27
|
-
|
28
|
-
# Use ActiveModel has_secure_password
|
29
|
-
# gem 'bcrypt', '~> 3.1.7'
|
30
|
-
|
31
|
-
# Use Unicorn as the app server
|
32
|
-
# gem 'unicorn'
|
33
|
-
|
34
|
-
# Use Capistrano for deployment
|
35
|
-
# gem 'capistrano-rails', group: :development
|
36
|
-
|
37
|
-
gem "mini_racer"
|
38
|
-
gem "connection_pool"
|
39
|
-
gem "rainbow"
|
40
|
-
gem "addressable"
|
41
|
-
gem "execjs"
|
42
|
-
|
43
|
-
group :development, :test do
|
44
|
-
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
|
45
|
-
gem "awesome_print"
|
46
|
-
gem "listen"
|
47
|
-
gem "pry"
|
48
|
-
gem "pry-byebug"
|
49
|
-
gem "pry-doc"
|
50
|
-
gem "pry-rails"
|
51
|
-
gem "pry-rescue"
|
52
|
-
gem "pry-stack_explorer"
|
53
|
-
gem "rubocop", require: false
|
54
|
-
gem "ruby-lint", require: false
|
55
|
-
gem "scss_lint", require: false
|
56
|
-
|
57
|
-
end
|
58
|
-
|
59
|
-
group :test do
|
60
|
-
gem "capybara"
|
61
|
-
gem "capybara-screenshot"
|
62
|
-
gem "coveralls", require: false
|
63
|
-
# install trouble with updated
|
64
|
-
# gem "capybara-webkit"
|
65
|
-
gem "chromedriver-helper"
|
66
|
-
gem "generator_spec"
|
67
|
-
gem "launchy"
|
68
|
-
gem "rspec-rails"
|
69
|
-
gem "rspec-retry"
|
70
|
-
gem "selenium-webdriver"
|
71
|
-
gem 'test-unit', '~> 3.0'
|
72
|
-
gem "equivalent-xml", github: "mbklein/equivalent-xml"
|
73
|
-
end
|
@@ -1,5 +0,0 @@
|
|
1
|
-
# Babel
|
2
|
-
|
3
|
-
As of React on Rails 2.0, we recommend Babel 6 and at least node version 5.5. If you want to stick with Babel 5 for a bit, see [Issue #238](https://github.com/shakacode/react_on_rails/issues/238).
|
4
|
-
|
5
|
-
We recommend that you take a look at https://github.com/shakacode/react-webpack-rails-tutorial and follow the recipe there. We will try to keep that simple example updated.
|
@@ -1,92 +0,0 @@
|
|
1
|
-
# Heroku Deployment
|
2
|
-
The generator has created the necessary files and gems for deployment to Heroku. If you have installed manually, you will need to provide these files yourself:
|
3
|
-
|
4
|
-
+ `Procfile`: used by Heroku and Foreman to start the Puma server
|
5
|
-
+ `12factor` gem: required by Heroku if using a version before Rails 5 (see their [README](https://github.com/heroku/rails_12factor#rails-5) for more information if upgrading from a lower version)
|
6
|
-
+ `'puma'` gem: recommended Heroku webserver
|
7
|
-
+ `config/puma.rb`: Puma webserver config file
|
8
|
-
+ `/package.json`: Top level package.json which must contain `"scripts": { "postinstall": "cd client && npm install" }`
|
9
|
-
|
10
|
-
If you want to see an updated example deployed to Heroku, please visit the [github.com/shakacode/react-webpack-rails-tutorial](https://github.com/shakacode/react-webpack-rails-tutorial).
|
11
|
-
|
12
|
-
## More details on precompilation using webpack to create JavaScript assets
|
13
|
-
This is how the `assets:precompile` rake task gets modified by `react_on_rails`. You should be able to call `clear_prerequisites` and setup your own custom precompile if needed.
|
14
|
-
```ruby
|
15
|
-
# These tasks run as pre-requisites of assets:precompile.
|
16
|
-
# Note, it's not possible to refer to ReactOnRails configuration values at this point.
|
17
|
-
Rake::Task["assets:precompile"]
|
18
|
-
.clear_prerequisites
|
19
|
-
.enhance([:environment, "react_on_rails:assets:compile_environment"])
|
20
|
-
.enhance do
|
21
|
-
Rake::Task["react_on_rails:assets:symlink_non_digested_assets"].invoke
|
22
|
-
Rake::Task["react_on_rails:assets:delete_broken_symlinks"].invoke
|
23
|
-
end
|
24
|
-
```
|
25
|
-
|
26
|
-
For an example of how to do this, see the [dummy app](https://github.com/shakacode/react_on_rails/blob/master/spec/dummy/lib/tasks/assets.rake).
|
27
|
-
|
28
|
-
## Caching Node Modules
|
29
|
-
By default Heroku will cache the root `node_modules` directory between deploys but since we're installing in `client/node_modules` you'll need to add the following line to the `package.json` in your root directory (otherwise you'll have to sit through a full `yarn` on each deploy):
|
30
|
-
|
31
|
-
```js
|
32
|
-
"cacheDirectories": [
|
33
|
-
"node_modules",
|
34
|
-
"client/node_modules"
|
35
|
-
],
|
36
|
-
```
|
37
|
-
|
38
|
-
## How to Deploy
|
39
|
-
|
40
|
-
React on Rails requires both a ruby environment (for Rails) and a Node environment (for Webpack), so you will need to have Heroku use multiple buildpacks.
|
41
|
-
|
42
|
-
Assuming you have downloaded and installed the Heroku command-line utility and have initialized the app, you will need to tell Heroku to use both buildpacks via the command-line:
|
43
|
-
|
44
|
-
```
|
45
|
-
heroku buildpacks:set heroku/ruby
|
46
|
-
heroku buildpacks:add --index 1 heroku/nodejs
|
47
|
-
```
|
48
|
-
|
49
|
-
For more information, see [Using Multiple Buildpacks for an App](https://devcenter.heroku.com/articles/using-multiple-buildpacks-for-an-app)
|
50
|
-
|
51
|
-
## Fresh Rails Install
|
52
|
-
|
53
|
-
### Swap out sqlite for postgres by doing the following:
|
54
|
-
|
55
|
-
#### 1. Delete the line with `sqlite` and replace it with:
|
56
|
-
|
57
|
-
```ruby
|
58
|
-
gem 'pg'
|
59
|
-
```
|
60
|
-
|
61
|
-
#### 2. Replace your `database.yml` file with this (assuming your app name is "ror")
|
62
|
-
|
63
|
-
```yml
|
64
|
-
default: &default
|
65
|
-
adapter: postgresql
|
66
|
-
username:
|
67
|
-
password:
|
68
|
-
host: localhost
|
69
|
-
|
70
|
-
development:
|
71
|
-
<<: *default
|
72
|
-
database: ror_development
|
73
|
-
|
74
|
-
# Warning: The database defined as "test" will be erased and
|
75
|
-
# re-generated from your development database when you run "rake".
|
76
|
-
# Do not set this db to the same as development or production.
|
77
|
-
test:
|
78
|
-
<<: *default
|
79
|
-
database: ror_test
|
80
|
-
|
81
|
-
production:
|
82
|
-
<<: *default
|
83
|
-
database: ror_production
|
84
|
-
```
|
85
|
-
|
86
|
-
Run:
|
87
|
-
|
88
|
-
```
|
89
|
-
bundle
|
90
|
-
bin/rake db:setup
|
91
|
-
bin/rake db:migrate
|
92
|
-
```
|
@@ -1,47 +0,0 @@
|
|
1
|
-
*This document should only be referenced if you're **NOT** using the current technique of the rails/webpacker helpers to place your client-side assets in your `/public` directory.*
|
2
|
-
|
3
|
-
|
4
|
-
# Hot Reloading of Assets For Rails Development
|
5
|
-
|
6
|
-
_See [PR #865](https://github.com/shakacode/react_on_rails/pull/865) for a detailed example of doing hot reloading using V8+ with Webpack v2. See [#772](https://github.com/shakacode/react_on_rails/issues/772) and [#361](https://github.com/shakacode/react-webpack-rails-tutorial/issues/361)._
|
7
|
-
|
8
|
-
------
|
9
|
-
|
10
|
-
This document outlines the steps to setup your React On Rails Environment so that you can experience the pleasure of hot reloading of JavaScript and Sass during your Rails development work. See [Issue 332](https://github.com/shakacode/react_on_rails/issues/332) for troubleshooting. There are 3 examples of this setup:
|
11
|
-
|
12
|
-
1. [minimal demo here](https://github.com/retroalgic/react-on-rails-hot-minimal): The most simple and updated hot reloading setup.
|
13
|
-
1. [spec/dummy](https://github.com/shakacode/react_on_rails/tree/master/spec/dummy): Simpler setup used for integration testing this gem.
|
14
|
-
1. [shakacode/react-webpack-rails-tutorial](https://github.com/shakacode/react-webpack-rails-tutorial/). Full featured setup using Twitter bootstrap.
|
15
|
-
|
16
|
-
## Help Wanted
|
17
|
-
|
18
|
-
This doc might be outdated. PRs welcome!
|
19
|
-
|
20
|
-
## High Level Strategy
|
21
|
-
|
22
|
-
We'll use a Webpack Dev server on port 3500 to provide the assets to Rails, rather than the asset pipeline, and only during development mode. This is configured via the `Procfile.hot`.
|
23
|
-
|
24
|
-
`Procfile.static` provides an alternative that uses "static" assets, similar to a production deployment.
|
25
|
-
|
26
|
-
## Places to Configure (Files to Examine)
|
27
|
-
|
28
|
-
1. See the Webpack config files. Note, these examples are now setup for using [CSS Modules](https://github.com/css-modules/css-modules).
|
29
|
-
1. [client/webpack.client.base.config.js](https://github.com/shakacode/react_on_rails/tree/master/spec/dummy/client/webpack.client.base.config.js): Common configuration for hot or static assets.
|
30
|
-
1. [client/webpack.client.rails.hot.config.js](https://github.com/shakacode/react_on_rails/tree/master/spec/dummy/client/webpack.client.rails.hot.config.js): Setup for hot loading, using react-transform-hmr.
|
31
|
-
1. [client/webpack.client.rails.build.config.js](https://github.com/shakacode/react_on_rails/tree/master/spec/dummy/client/webpack.client.rails.build.config.js): Setup for static loading, as is done in a production deployment.
|
32
|
-
1. [app/views/layouts/application.html.erb](https://github.com/shakacode/react_on_rails/tree/master/spec/dummy/app/views/layouts/application.html.erb): Uses the view helpers `env_stylesheet_link_tag` and `env_javascript_include_tag` which will either do the hot reloading or the static loading.
|
33
|
-
1. See the Procfiles: [Procfile.hot](https://github.com/shakacode/react_on_rails/tree/master/spec/dummy/Procfile.hot) and [Procfile.static](https://github.com/shakacode/react_on_rails/tree/master/spec/dummy/Procfile.static). These:
|
34
|
-
1. Start the webpack processes, depending on the mode or HOT or not.
|
35
|
-
2. Start the rails server, setting an ENV value of REACT_ON_RAILS_ENV to HOT if we're hot loading or else setting this to blank.
|
36
|
-
1. Configure the file Rails asset pipeline files:
|
37
|
-
1. [app/assets/javascripts/application_static.js](https://github.com/shakacode/react_on_rails/tree/master/spec/dummy/app/assets/javascripts/application_static.js)
|
38
|
-
1. [app/assets/stylesheets/application_non_webpack.scss](https://github.com/shakacode/react_on_rails/blob/master/spec/dummy/app/assets/stylesheets/application_non_webpack.scss)
|
39
|
-
1. Copy the [client/server-rails-hot.js](https://github.com/shakacode/react_on_rails/tree/master/spec/dummy/client/server-rails-hot.js) to the your client directory.
|
40
|
-
1. Copy the scripts in the top level and client level `package.json` files:
|
41
|
-
1. Top Level: [package.json](https://github.com/shakacode/react_on_rails/tree/master/spec/dummy/package.json)
|
42
|
-
1. Client Level: [package.json](https://github.com/shakacode/react_on_rails/tree/master/spec/dummy/client/package.json)
|
43
|
-
|
44
|
-
|
45
|
-
## Code Snippets
|
46
|
-
Please refer to the examples linked above in `spec/dummy` as these code samples might be out of date.
|
47
|
-
|