react_on_rails 9.0.0.beta.11 → 9.0.0.beta.12

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 (69) hide show
  1. checksums.yaml +4 -4
  2. data/.eslintignore +2 -0
  3. data/.gitignore +1 -0
  4. data/.rubocop.yml +5 -0
  5. data/.travis.yml +11 -0
  6. data/CHANGELOG.md +24 -9
  7. data/Gemfile +2 -2
  8. data/Gemfile.rails32 +74 -0
  9. data/README.md +17 -12
  10. data/Rakefile +8 -1
  11. data/app/helpers/react_on_rails_helper.rb +1 -1
  12. data/docs/additional-reading/asset-pipeline.md +20 -0
  13. data/docs/additional-reading/hot-reloading-rails-development.md +0 -75
  14. data/docs/additional-reading/rspec-configuration.md +6 -23
  15. data/{lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb.tt → docs/basics/configuration.md} +78 -41
  16. data/docs/basics/generator.md +0 -5
  17. data/docs/basics/installation-overview.md +5 -4
  18. data/docs/tutorial.md +25 -13
  19. data/lib/generators/USAGE +0 -4
  20. data/lib/generators/react_on_rails/base_generator.rb +41 -81
  21. data/lib/generators/react_on_rails/dev_tests_generator.rb +7 -5
  22. data/lib/generators/react_on_rails/install_generator.rb +5 -10
  23. data/lib/generators/react_on_rails/react_no_redux_generator.rb +10 -9
  24. data/lib/generators/react_on_rails/react_with_redux_generator.rb +27 -17
  25. data/lib/generators/react_on_rails/templates/.eslintrc +2 -0
  26. data/lib/generators/react_on_rails/templates/base/base/Procfile.dev +4 -0
  27. data/lib/generators/react_on_rails/templates/base/base/Procfile.dev-server +5 -0
  28. data/lib/generators/react_on_rails/templates/base/base/{client/app → app/javascript}/bundles/HelloWorld/components/HelloWorld.jsx +0 -0
  29. 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
  30. data/lib/generators/react_on_rails/templates/base/base/app/views/hello_world/index.html.erb.tt +0 -1
  31. data/lib/generators/react_on_rails/templates/base/base/app/views/layouts/{hello_world.html.erb.tt → hello_world.html.erb} +3 -3
  32. data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb +41 -0
  33. data/lib/generators/react_on_rails/templates/dev_tests/.eslintrc +25 -0
  34. data/lib/generators/react_on_rails/templates/dev_tests/spec/rails_helper.rb +0 -1
  35. data/lib/generators/react_on_rails/templates/dev_tests/spec/spec_helper.rb +2 -0
  36. 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
  37. data/lib/generators/react_on_rails/templates/redux/base/{client/app → app/javascript}/bundles/HelloWorld/components/HelloWorld.jsx +0 -0
  38. 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
  39. 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
  40. 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
  41. data/lib/generators/react_on_rails/templates/redux/base/{client/app → app/javascript}/bundles/HelloWorld/startup/HelloWorldApp.jsx +0 -0
  42. 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
  43. data/lib/react_on_rails/configuration.rb +15 -10
  44. data/lib/react_on_rails/server_rendering_pool/exec.rb +21 -8
  45. data/lib/react_on_rails/test_helper.rb +6 -6
  46. data/lib/react_on_rails/test_helper/ensure_assets_compiled.rb +1 -1
  47. data/lib/react_on_rails/test_helper/webpack_assets_compiler.rb +3 -1
  48. data/lib/react_on_rails/test_helper/webpack_assets_status_checker.rb +10 -6
  49. data/lib/react_on_rails/utils.rb +34 -3
  50. data/lib/react_on_rails/version.rb +1 -1
  51. data/lib/react_on_rails/version_checker.rb +1 -1
  52. data/lib/tasks/assets.rake +10 -2
  53. data/package.json +6 -2
  54. data/rakelib/dummy_apps.rake +9 -0
  55. data/rakelib/example_type.rb +8 -19
  56. data/rakelib/examples.rake +3 -5
  57. data/rakelib/run_rspec.rake +17 -0
  58. data/yarn.lock +29 -0
  59. metadata +19 -23
  60. data/lib/generators/react_on_rails/node_generator.rb +0 -24
  61. data/lib/generators/react_on_rails/templates/base/base/Procfile.dev.tt +0 -4
  62. data/lib/generators/react_on_rails/templates/base/base/client/.babelrc +0 -3
  63. data/lib/generators/react_on_rails/templates/base/base/client/REACT_ON_RAILS_CLIENT_README.md +0 -9
  64. data/lib/generators/react_on_rails/templates/base/base/client/package.json.tt +0 -36
  65. data/lib/generators/react_on_rails/templates/base/base/client/webpack.config.js +0 -78
  66. data/lib/generators/react_on_rails/templates/base/base/config/webpacker.yml +0 -28
  67. data/lib/generators/react_on_rails/templates/base/base/package.json.tt +0 -8
  68. data/lib/generators/react_on_rails/templates/node/base/client/node/package.json +0 -10
  69. data/lib/generators/react_on_rails/templates/node/base/client/node/server.js +0 -105
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 152c5b1177a2a18b4f42911852dc05e8d317ca1d
4
- data.tar.gz: d4d456575c0bc79630f9f2ae6df6b38e241437e1
3
+ metadata.gz: a99cdeb5818a06173daa27fe511864be5f3b6890
4
+ data.tar.gz: 1e8963da13595accc8eb5c1febab8e0d95c6b8d6
5
5
  SHA512:
6
- metadata.gz: e8e80dc096f8aac19a20abcc62e7b8a2b249a036fdf933a59cff68e2b3dc6e2521c411e37ce6774b65a5ba2d37bc3fb63e11e1b651eb1c1be53c78b7ca8be7b6
7
- data.tar.gz: ece4de2349632633fce5f2a070713a39e686dac7fe34150112455085ee7d91cc6c303608358c8bbed07840f82dd82809e8e39b3628dca49fad9955cec40da50e
6
+ metadata.gz: 6fbd64f6e6a1535b359a503b484dd35ed967ae3327b990b13fa9a7a6ab1ca47008fcb14defa92abb3ce6ba07e42f6d3ee0eb4f1ef01c6255153bc5205fd7ae94
7
+ data.tar.gz: 03fa4ec625fe040028715c0860222fe03e3f83f061eb5b23aaac62f8184bfa9ccb4929a800f550312fdbc36d6e82d7dd89cc6fe805e4ecda08c07a20ee11a873
@@ -2,6 +2,7 @@ node_modules
2
2
  coverage
3
3
  spec/react_on_rails/dummy-for-generators
4
4
  spec/dummy
5
+ spec/dummy_no_webpacker
5
6
  node_package/lib/
6
7
  node_package/tests/node_modules
7
8
  node_package/webpack.config.js
@@ -12,3 +13,4 @@ node_package/webpack.config.js
12
13
  **/app/assets/javascripts/application.js
13
14
  **/coverage/**
14
15
  **/cable.js
16
+ **/public/packs*/*
data/.gitignore CHANGED
@@ -1,6 +1,7 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
3
  /Gemfile.lock
4
+ /Gemfile.rails32.lock
4
5
  /_yardoc/
5
6
  /coverage/
6
7
  /doc/
@@ -27,6 +27,10 @@ AllCops:
27
27
  - 'spec/dummy/bin/**/*'
28
28
  - 'spec/dummy/client/node_modules/**/*'
29
29
  - 'spec/dummy/client/node_modules/**/.*'
30
+ - 'spec/dummy_no_webpacker/Procfile.*'
31
+ - 'spec/dummy_no_webpacker/bin/**/*'
32
+ - 'spec/dummy_no_webpacker/client/node_modules/**/*'
33
+ - 'spec/dummy_no_webpacker/client/node_modules/**/.*'
30
34
  - 'gen-examples/examples/**/.*'
31
35
  - 'gen-examples/examples/**/*'
32
36
 
@@ -34,6 +38,7 @@ Style/FileName:
34
38
  Exclude:
35
39
  - 'Gemfile'
36
40
  - 'spec/dummy/Gemfile'
41
+ - 'spec/dummy_no_webpacker/Gemfile'
37
42
 
38
43
  # Turn off until we require 2.3 ruby
39
44
  Style/SafeNavigation:
@@ -6,6 +6,7 @@ rvm:
6
6
  # Rails 5 requires 2.2
7
7
  - 2.3.1
8
8
  - 2.4.1
9
+ - 2.2.6
9
10
  services:
10
11
  - docker
11
12
 
@@ -17,6 +18,7 @@ cache:
17
18
 
18
19
  gemfile:
19
20
  - spec/dummy/Gemfile
21
+ - spec/dummy_no_webpacker/Gemfile.rails32
20
22
 
21
23
  env:
22
24
  global:
@@ -49,6 +51,15 @@ before_script:
49
51
  script:
50
52
  - bundle exec rake
51
53
 
54
+ matrix:
55
+ exclude:
56
+ - gemfile: spec/dummy_no_webpacker/Gemfile.rails32
57
+ rvm: 2.3.1
58
+ - gemfile: spec/dummy_no_webpacker/Gemfile.rails32
59
+ rvm: 2.4.1
60
+ - gemfile: spec/dummy/Gemfile
61
+ rvm: 2.2.6
62
+
52
63
  notifications:
53
64
  slack:
54
65
  secure: LfcUk4AJ4vAxWwRIyw4tFh8QNbYefMwfG/oLfsN3CdRMWMOtCOHR1GGsRhAOlfVVJ/FvHqVqWj5gK7z7CaO5Uvl7rD3/zJ8QzExKx/iH9yWj55iIPuKLzwFNnBwRpFW/cqyU2lFPPRxGD50BUn3c+qybkuSqtKZ6qtTowwqlxLa5iyM3N95aZp7MEIKCP7cPcnHfLbJyP8wBpotp/rtw62eXM2HIRJJwgjcp+n+My7VFR9DnBXNFf6R91aZHM4U4cHHDbu15HFtH8honVrzK1JQdyqMNHga+j04dFuaS7z9Q369/hsELMOBp/227+Pz7ZRfWZFK4UASguOvyeX7RmGTRpTuWLm1XJeUzfsPZVROecaSVQBve+U7F12yKqilt97QlvRXn2EGyBILqvxtFNNR4S9kgAf72/6EFgiM1TKq7i9zy6lVOnagU2+7amq7UeopX1uoFsUfNKMR7YbgV1WjF0IK95UP0b0/7ZOJlPYgi5zzkQi129qAFWSMmxGk+ZpsttHh/tjJtvAh0A3mHq/zb5w4ub/MbSyZqeDUNgGj72QArOWUFSAStQT1ybsVLeDoKPgOvVq7OV1D64rpcHjBXcqOCit8tDZ+TqkFhcYJo2cITSaqE4zJXn+4F5s7So5O8CyfKYQq+kFJCooYGmfgTUckJpGl7eIvKmL4TN9Q=
@@ -14,11 +14,16 @@ Changes since last non-beta release.
14
14
  ## 9.0 from 8.x. Upgrade Instructions
15
15
  All 9.0.0 beta versions can be viewed in [PR 908](https://github.com/shakacode/react_on_rails/pull/908)
16
16
 
17
- - Update the gemfile. Switch over to using Webpacker on the ShakaCode branch:
17
+ - Breaking Configuration Changes
18
+ 1. Added `config.node_modules_location` which defaults to `""` if Webpacker is installed. You may want to set this to 'client'` to `config/initializers/react_on_rails.rb` to keep your node_modules inside of `/client`
19
+ 2. Renamed
20
+ * config.npm_build_test_command ==> config.build_test_command
21
+ * config.npm_build_production_command ==> config.build_production_command
22
+
23
+ - Update the gemfile. Switch over to using the webpacker gem.
18
24
 
19
25
  ```rb
20
- gem "webpacker", git: "https://github.com/shakacode/webpacker.git",
21
- branch: "issue-464-merge-webpacker-lite-into-webpacker-v5"
26
+ gem "webpacker"
22
27
  ```
23
28
 
24
29
  - Update for the renaming in the `WebpackConfigLoader` in your webpack configuration.
@@ -80,22 +85,26 @@ gem "webpacker", git: "https://github.com/shakacode/webpacker.git",
80
85
  - Rename `webpack_public_output_dir` to `public_output_path`.
81
86
 
82
87
  - Edit your Procfile.dev
83
- - For static loading, either:
84
- - Comment out or remove the dev_server area of your config.
85
- - Edit your static procfile to set env value WEBPACKER_DEV_SERVER=FALSE
86
- - For hot loading, either:
88
+ - Remove the env value WEBPACKER_DEV_SERVER as it's not used
89
+ - For hot loading:
87
90
  - Set the `hmr` key in your `webpacker.yml` to `true`.
88
- - Edit your hot procfile to set env value WEBPACKER_HMR=TRUE
89
91
 
90
92
 
91
93
  #### Troubleshooting
92
- * Be sure to
93
94
 
94
95
 
95
96
 
96
97
  ### [9.0.0]
97
98
  *Diffs for the beta to master*
98
99
 
100
+ ### [9.0.0-beta.12]
101
+ - Updated for latest rails/webpacker using the official gem
102
+ - hot reloading working in generator
103
+
104
+ ### [9.0.0-beta.11]
105
+ - Updated for latest rails_webpacker.
106
+ - hot reloading working in spec/dummy
107
+
99
108
  ### [9.0.0-beta.10]
100
109
  - Updated for the latest rails/webpacker. Added the cache_manifest setting.
101
110
 
@@ -131,6 +140,10 @@ gem "webpacker", git: "https://github.com/shakacode/webpacker.git",
131
140
  ### [9.0.0-beta.1]
132
141
  - First version of depending on Webpacker rather than Webpacker Lite
133
142
 
143
+ ### [8.0.7]
144
+ #### fixed
145
+ - Fixes generator bug by keeping blank line at top in case existing .gitignore does not end in a newline. [#916](https://github.com/shakacode/react_on_rails/pull/916) by [justin808](https://github.com/justin808).
146
+
134
147
  ### [8.0.6]
135
148
  #### fixed
136
149
  - Fixes server rendering when using a CDN. Server rendering would try to fetch a file with the "asset_host". This change updates the webpacker_lite dependency to 2.1.0 which has a new helper `pack_path`. [#901](https://github.com/shakacode/react_on_rails/pull/901) by [justin808](https://github.com/justin808). Be sure to update webpacker_lite to 2.1.0.
@@ -751,6 +764,7 @@ Best done with Object destructing:
751
764
 
752
765
  [Unreleased]: https://github.com/shakacode/react_on_rails/compare/rails-webpacker...9.0.0-beta.11
753
766
  [9.0.0]: https://github.com/shakacode/react_on_rails/compare/master...9.0.0-beta.11
767
+ [9.0.0-beta.12]: https://github.com/shakacode/react_on_rails/compare/9.0.0-beta.11...9.0.0-beta.12
754
768
  [9.0.0-beta.11]: https://github.com/shakacode/react_on_rails/compare/9.0.0-beta.10...9.0.0-beta.11
755
769
  [9.0.0-beta.10]: https://github.com/shakacode/react_on_rails/compare/9.0.0-beta.9...9.0.0-beta.10
756
770
  [9.0.0-beta.9]: https://github.com/shakacode/react_on_rails/compare/9.0.0-beta.8...9.0.0-beta.9
@@ -762,6 +776,7 @@ Best done with Object destructing:
762
776
  [9.0.0-beta.3]: https://github.com/shakacode/react_on_rails/compare/9.0.0-beta.2...9.0.0-beta.3
763
777
  [9.0.0-beta.2]: https://github.com/shakacode/react_on_rails/compare/9.0.0-beta.1...9.0.0-beta.2
764
778
  [9.0.0-beta.1]: https://github.com/shakacode/react_on_rails/compare/master...9.0.0-beta.1
779
+ [8.0.7]: https://github.com/shakacode/react_on_rails/compare/8.0.6...8.0.7
765
780
  [8.0.6]: https://github.com/shakacode/react_on_rails/compare/8.0.5...8.0.6
766
781
  [8.0.5]: https://github.com/shakacode/react_on_rails/compare/8.0.3...8.0.5
767
782
  [8.0.3]: https://github.com/shakacode/react_on_rails/compare/8.0.2...8.0.3
data/Gemfile CHANGED
@@ -38,10 +38,10 @@ gem "chromedriver-helper"
38
38
  gem "launchy"
39
39
  gem "poltergeist"
40
40
  gem "selenium-webdriver"
41
- gem "webpacker", git: "https://github.com/shakacode/webpacker.git",
42
- branch: "issue-464-merge-webpacker-lite-into-webpacker-v5"
41
+ gem "webpacker", "~> 3.0"
43
42
 
44
43
  # TODO: remove once we get out of beta.
45
44
  # gem 'webpacker', path: "../../forks/webpacker"
46
45
 
46
+ gem "equivalent-xml", github: "mbklein/equivalent-xml"
47
47
  gem "rainbow"
@@ -0,0 +1,74 @@
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 "poltergeist"
69
+ gem "rspec-rails"
70
+ gem "rspec-retry"
71
+ gem "selenium-webdriver"
72
+ gem 'test-unit', '~> 3.0'
73
+ gem "equivalent-xml", github: "mbklein/equivalent-xml"
74
+ end
data/README.md CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  *If this projects helps you, please give us a star!*
4
4
 
5
+ [rails/webpacker](https://github.com/rails/webpacker) just shipped 3.0. This now enables me to ship version 9.0. See [PR #908](https://github.com/shakacode/react_on_rails/pull/908) for more details.
6
+
5
7
  ## Thank you from Justin Gordon and [ShakaCode](http://www.shakacode.com)
6
8
 
7
9
  Thank you for considering using [React on Rails](https://github.com/shakacode/react_on_rails).
@@ -92,7 +94,7 @@ React on Rails integrates Facebook's [React](https://github.com/facebook/react)
92
94
  + [Features](#features)
93
95
  + [Why Webpack?](#why-webpack)
94
96
  + [Getting Started](#getting-started)
95
- - [Installation Summary](#installation-summary)
97
+ - [Installation Overview](#installation-overview)
96
98
  - [Initializer Configuration: config/initializers/react_on_rails.rb](#initializer-configuration)
97
99
  - [Including your React Component in your Rails Views](#including-your-react-component-in-your-rails-views)
98
100
  - [I18n](#i18n)
@@ -105,7 +107,7 @@ React on Rails integrates Facebook's [React](https://github.com/facebook/react)
105
107
  - [ReactOnRails JavaScript API](#reactonrails-javascript-api)
106
108
  - [React-Router](#react-router)
107
109
  - [Deployment](#deployment)
108
- + [Integration with Node](#integration-with-node)
110
+ + [Integration with Node.js for Server Rendering](#user-content-integration-with-nodejs-for-server-rendering)
109
111
  + [Additional Documentation](#additional-documentation)
110
112
  + [Contributing](#contributing)
111
113
  + [License](#license)
@@ -144,9 +146,17 @@ To upgrade existing apps to React on Rails 8 see the [Installation Overview](doc
144
146
 
145
147
  ```ruby
146
148
  gem "react_on_rails", "9.0.0"
149
+ gem "webpacker", "~> 3.0"
147
150
  ```
148
151
 
149
- 2. Commit this to git (you cannot run the generator unless you do this or pass the option `--ignore-warnings`).
152
+ 2. Run the following 2 commands to install Webpacker with React:
153
+ ```
154
+ bundle exec rails webpacker:install
155
+ bundle exec rails webpacker:install:react
156
+
157
+ ```
158
+
159
+ 2. Commit this to git (or else you cannot run the generator unless you pass the option `--ignore-warnings`).
150
160
 
151
161
  3. See help for the generator:
152
162
 
@@ -160,13 +170,7 @@ To upgrade existing apps to React on Rails 8 see the [Installation Overview](doc
160
170
  rails generate react_on_rails:install
161
171
  ```
162
172
 
163
- 5. Bundle and NPM install. Make sure you are on a recent version of node. Please use at least Node v5. Bundle is for adding execJs. You can remove that if you are sure you will not server render.
164
-
165
- ```bash
166
- bundle && yarn
167
- ```
168
-
169
- 6. Ensure that you have `foreman` installed: `gem install foreman`.
173
+ 5. Ensure that you have `foreman` installed: `gem install foreman`.
170
174
 
171
175
  7. Start your Rails server:
172
176
 
@@ -405,12 +409,12 @@ end
405
409
  In this case, a prop and value for `somethingUseful` will go into the railsContext passed to all react_component and redux_store calls. You may set any values available in the view rendering context.
406
410
 
407
411
  ### Globally Exposing Your React Components
408
- Place your JavaScript code inside of the provided `client/app` folder. Use modules just as you would when using webpack alone. The difference here is that instead of mounting React components directly to an element using `React.render`, you **register your components to ReactOnRails and then mount them with helpers inside of your Rails views**.
412
+ Place your JavaScript code inside of the default `app/javascript` folder. Use modules just as you would when using webpack alone. The difference here is that instead of mounting React components directly to an element using `React.render`, you **register your components to ReactOnRails and then mount them with helpers inside of your Rails views**.
409
413
 
410
414
  This is how to expose a component to the `react_component` view helper.
411
415
 
412
416
  ```javascript
413
- // client/app/bundles/HelloWorld/startup/HelloWorld.jsx
417
+ // app/javascript/packs/hello-world-bundle.js
414
418
  import HelloWorld from '../components/HelloWorld';
415
419
  import ReactOnRails from 'react-on-rails';
416
420
  ReactOnRails.register({ HelloWorld });
@@ -610,6 +614,7 @@ If you want to use a node server for server rendering, [get in touch](mailto:jus
610
614
  + **Development**
611
615
  + [React on Rails Basic Installation Tutorial](./docs/tutorial.md) ([live demo](https://hello-react-on-rails.herokuapp.com))
612
616
  + [Installation Overview](./docs/basics/installation-overview.md)
617
+ + [Configuration](./docs/basics/configuration.md)
613
618
  + [Migration from react-rails](./docs/basics/migrating-from-react-rails.md)
614
619
  + [Recommended Project Structure](./docs/additional-reading/recommended-project-structure.md)
615
620
  + [Generator Tips](./docs/basics/generator.md)
data/Rakefile CHANGED
@@ -3,12 +3,19 @@
3
3
  # Rake will automatically load any *.rake files inside of the "rakelib" folder
4
4
  # See rakelib/
5
5
  tasks = %w[run_rspec lint]
6
+ prepare_for_ci = %w[node_package dummy_apps examples]
7
+
6
8
  if ENV["USE_COVERALLS"] == "TRUE"
7
9
  require "coveralls/rake/task"
8
10
  Coveralls::RakeTask.new
9
11
  tasks << "coveralls:push"
10
12
  end
11
13
 
14
+ if File.basename(ENV["BUNDLE_GEMFILE"] || "") == "Gemfile.rails32"
15
+ tasks = %w[run_rspec:gem_rails32 run_rspec:dummy_no_webpacker]
16
+ prepare_for_ci = %w[node_package dummy_apps:dummy_no_webpacker]
17
+ end
18
+
12
19
  desc "Run all tests and linting"
13
20
  task default: tasks
14
21
 
@@ -16,7 +23,7 @@ desc "All actions but no examples, good for local developer run."
16
23
  task all_but_examples: ["run_rspec:all_but_examples", "lint"]
17
24
 
18
25
  desc "Prepare for ci, including node_package, dummy app, and generator examples"
19
- task prepare_for_ci: %w[node_package dummy_apps examples]
26
+ task prepare_for_ci: prepare_for_ci
20
27
 
21
28
  desc "Runs prepare_for_ci and tasks"
22
29
  task ci: [:prepare_for_ci, *tasks]
@@ -183,7 +183,7 @@ module ReactOnRailsHelper
183
183
  end
184
184
 
185
185
  def sanitized_props_string(props)
186
- props.is_a?(String) ? ERB::Util.json_escape(props) : props.to_json
186
+ ReactOnRails::JsonOutput.escape(props.is_a?(String) ? props : props.to_json)
187
187
  end
188
188
 
189
189
  # Helper method to take javascript expression and returns the output from evaluating it.
@@ -0,0 +1,20 @@
1
+ # Asset Pipeline
2
+
3
+ The plumbing of webpack produced assets through the asset pipeline is deprecated as of v9.0.
4
+
5
+ The information in this document is here for those that have not yet upgraded.
6
+
7
+
8
+
9
+
10
+ This option still works for your `/config/initializers/react_on_rails.rb` if you are still using the
11
+ asset pipeline.
12
+ ```
13
+ ################################################################################
14
+ # MISCELLANEOUS OPTIONS
15
+ ################################################################################
16
+ # If you want to use webpack for CSS and images, and still use the asset pipeline,
17
+ # see https://github.com/shakacode/react_on_rails/blob/master/docs/additional-reading/rails-assets.md
18
+ # And you will use a setting like this.
19
+ config.symlink_non_digested_assets_regex = /\.(png|jpg|jpeg|gif|tiff|woff|ttf|eot|svg|map)/
20
+ ```
@@ -20,8 +20,6 @@ We'll use a Webpack Dev server on port 3500 to provide the assets to Rails, rath
20
20
 
21
21
  `Procfile.static` provides an alternative that uses "static" assets, similar to a production deployment.
22
22
 
23
- The secret sauce is in the [app/views/layouts/application.html.erb](https://github.com/shakacode/react_on_rails/tree/master/spec/dummy/app/views/layouts/application.html.erb) where it uses view helps to configure the correct assets to load, being either the "hot" assets or the "static" assets.
24
-
25
23
  ## Places to Configure (Files to Examine)
26
24
 
27
25
  1. See the Webpack config files. Note, these examples are now setup for using [CSS Modules](https://github.com/css-modules/css-modules).
@@ -44,76 +42,3 @@ The secret sauce is in the [app/views/layouts/application.html.erb](https://gith
44
42
  ## Code Snippets
45
43
  Please refer to the examples linked above in `spec/dummy` as these code samples might be out of date.
46
44
 
47
-
48
- ### config/initializers/assets.rb
49
-
50
- ```ruby
51
- # Add folder with webpack generated assets to assets.paths
52
- Rails.application.config.assets.paths << Rails.root.join("app", "assets", "webpack")
53
-
54
- # Precompile additional assets.
55
- # application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
56
- Rails.application.config.assets.precompile << "server-bundle.js"
57
-
58
- type = ENV["REACT_ON_RAILS_ENV"] == "HOT" ? "non_webpack" : "static"
59
- Rails.application.config.assets.precompile +=
60
- [
61
- "application_#{type}.js",
62
- "application_#{type}.css"
63
- ]
64
- ```
65
-
66
- ### app/views/layouts/application.html.erb
67
-
68
- ```erb
69
- <head>
70
- <title>Dummy</title>
71
-
72
- <!-- These do use turbolinks 5 -->
73
- <%= env_stylesheet_link_tag(static: 'application_static',
74
- hot: 'application_non_webpack',
75
- media: 'all',
76
- 'data-turbolinks-track' => "reload") %>
77
-
78
- <!-- These do not use turbolinks, so no data-turbolinks-track -->
79
- <!-- This is to load the hot assets. -->
80
- <%= env_javascript_include_tag(hot: ['http://localhost:3500/vendor-bundle.js',
81
- 'http://localhost:3500/app-bundle.js']) %>
82
-
83
- <!-- These do use turbolinks 5 -->
84
- <%= env_javascript_include_tag(static: 'application_static',
85
- hot: 'application_non_webpack',
86
- 'data-turbolinks-track' => "reload") %>
87
-
88
- <%= csrf_meta_tags %>
89
- </head>
90
- ```
91
-
92
- ### Procfile.static
93
- ```
94
- # Run Rails without hot reloading (static assets).
95
- rails: REACT_ON_RAILS_ENV= rails s -b 0.0.0.0
96
-
97
- # Build client assets, watching for changes.
98
- rails-client-assets: yarn run build:dev:client
99
-
100
- # Build server assets, watching for changes. Remove if not server rendering.
101
- rails-server-assets: yarn run build:dev:server
102
- ```
103
-
104
- ### Procfile.hot
105
-
106
- ```
107
- # Procfile for development with hot reloading of JavaScript and CSS
108
-
109
- # Development rails requires both rails and rails-assets
110
- # (and rails-server-assets if server rendering)
111
- rails: REACT_ON_RAILS_ENV=HOT rails s -b 0.0.0.0
112
-
113
- # Run the hot reload server for client development
114
- hot-assets: HOT_RAILS_PORT=3500 yarn run hot-assets
115
-
116
- # Keep the JS fresh for server rendering. Remove if not server rendering
117
- rails-server-assets: yarn run build:dev:server
118
- ```
119
-