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

Sign up to get free protection for your applications and to get access to all the features.
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
-