react_on_rails 12.0.0.pre.beta.1 → 12.0.0.pre.beta.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -5
- data/docs/basics/configuration.md +11 -5
- data/docs/basics/hmr-and-hot-reloading-with-the-webpack-dev-server.md +49 -0
- data/docs/basics/rspec-configuration.md +27 -15
- data/docs/basics/upgrading-react-on-rails.md +7 -1
- data/docs/tutorial.md +40 -30
- data/lib/generators/react_on_rails/templates/base/base/Procfile.dev-hmr +17 -9
- data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb +2 -1
- data/lib/react_on_rails/locales/base.rb +8 -0
- data/lib/react_on_rails/test_helper/ensure_assets_compiled.rb +1 -1
- data/lib/react_on_rails/version.rb +1 -1
- data/lib/tasks/assets.rake +20 -5
- data/lib/tasks/locale.rake +1 -5
- data/package.json +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 36f887cf3c39cbfcc07631658436609bc247785e98348aa8017cd188dbc6e4ba
|
4
|
+
data.tar.gz: 359d97d280a4c6019fd954dd5d2e7f183388b4056a038703550ac08e5725ef06
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 847d326b4b3e529d987b2143a5aeeb6293d4b70f52681368129acddcc87275bd81315b541b0e0b0e76390d3854e5bb0294b21acc2ef92f74b68595c55b00bf2b
|
7
|
+
data.tar.gz: 9e0ce34d90525c0e1bfb7794e9381439632b4f93925642ce0e46d1c2ffefe6a3520dea2f3a442c305fd6289836152477fe24fe6bfb21c7bb1208b413981e0a12
|
data/CHANGELOG.md
CHANGED
@@ -4,7 +4,7 @@ All notable changes to this project's source code will be documented in this fil
|
|
4
4
|
Migration instructions for the major updates can be found [here](docs/basics/upgrading-react-on-rails.md#upgrading-to-version-9.md). Some smaller migration information can be found here.
|
5
5
|
|
6
6
|
## Need Help Migrating?
|
7
|
-
If you would like help in migrating between React on Rails versions or help with implementing server rendering, please contact [justin@shakacode.com](mailto:justin@shakacode.com) for information about our [
|
7
|
+
If you would like help in migrating between React on Rails versions or help with implementing server rendering, please contact [justin@shakacode.com](mailto:justin@shakacode.com) for information about our [React on Rails Pro Support Options](https://www.shakacode.com/react-on-rails-pro).
|
8
8
|
|
9
9
|
We specialize in helping companies to quickly and efficiently move from versions before 9 to current. The older versions use the Rails asset pipeline to package client assets. The current and recommended way is to use Webpack 4 for asset preparation. You may also need help migrating from the `rails/webpacker`'s Webpack configuration to a better setup ready for Server Side Rendering.
|
10
10
|
|
@@ -19,9 +19,11 @@ Changes since last non-beta release.
|
|
19
19
|
## UPCOMING 12.0 RELEASE
|
20
20
|
|
21
21
|
#### Improved
|
22
|
-
|
23
|
-
|
22
|
+
### [12.0.0.pre.beta.2]
|
23
|
+
* Changed the precompile task to use the rails/webpacker one by default
|
24
24
|
|
25
|
+
### [12.0.0.pre.beta.1]
|
26
|
+
* Updated generators to use React hooks
|
25
27
|
|
26
28
|
### [12.0.0.pre.beta.0]
|
27
29
|
Gem version: 12.0.0.pre.beta.0 and npm version 12.0.0-beta.0 released! Please try this out!
|
@@ -34,10 +36,13 @@ set JavaScript property `renderFunction` on the function for which you want to r
|
|
34
36
|
invoked to return the React component. In that case, you won't need to pass any unused params.
|
35
37
|
[PR 1268](https://github.com/shakacode/react_on_rails/pull/1268) by [justin808](https://github.com/justin808)
|
36
38
|
|
37
|
-
See [docs/basics/upgrading-react-on-rails](./docs/basics/upgrading-react-on-rails#upgrading-to-v12)
|
39
|
+
See [docs/basics/upgrading-react-on-rails](./docs/basics/upgrading-react-on-rails.md#upgrading-to-v12)
|
38
40
|
for details.
|
39
41
|
|
40
42
|
* Requires the use of rails/webpacker helpers
|
43
|
+
* If the webpacker webpack config files exist, then React on Rails will not override the default
|
44
|
+
assets:precompile setup by rails/webpacker. The fix is to remove the JS files inside of config/webpack,
|
45
|
+
like config/webpack/production.js.
|
41
46
|
* Removed **env_javascript_include_tag** and **env_stylesheet_link_tag** as these are replaced by view helpers
|
42
47
|
from rails/webpacker
|
43
48
|
* Removal of support for old Rubies and Rails.
|
@@ -921,7 +926,8 @@ Best done with Object destructing:
|
|
921
926
|
##### Fixed
|
922
927
|
- Fix several generator related issues.
|
923
928
|
|
924
|
-
[Unreleased]: https://github.com/shakacode/react_on_rails/compare/12.0.0-beta.
|
929
|
+
[Unreleased]: https://github.com/shakacode/react_on_rails/compare/12.0.0-beta.1...master
|
930
|
+
[12.0.0.pre.beta.1]: https://github.com/shakacode/react_on_rails/compare/12.0.0-beta.0...12.0.0-beta.1
|
925
931
|
[12.0.0.pre.beta.0]: https://github.com/shakacode/react_on_rails/compare/11.3.0...12.0.0-beta.0
|
926
932
|
[11.3.0]: https://github.com/shakacode/react_on_rails/compare/11.2.2...11.3.0
|
927
933
|
[11.2.2]: https://github.com/shakacode/react_on_rails/compare/11.2.1...11.2.2
|
@@ -61,8 +61,11 @@ ReactOnRails.configure do |config|
|
|
61
61
|
#
|
62
62
|
config.node_modules_location = "client" # If using webpacker you should use "".
|
63
63
|
|
64
|
-
# This configures the script to run to build the production assets by webpack. Set this to nil
|
64
|
+
# This configures the script to run to build the production assets by webpack . Set this to nil
|
65
65
|
# if you don't want react_on_rails building this file for you.
|
66
|
+
# Note, if you want to use this command then you should remove the file
|
67
|
+
# config/webpack/production.js
|
68
|
+
# If that file exists, React on Rails thinks that you'll use the rails/webpacker bin/webpack compiler.
|
66
69
|
config.build_production_command = "RAILS_ENV=production bin/webpack"
|
67
70
|
|
68
71
|
################################################################################
|
@@ -89,7 +92,9 @@ ReactOnRails.configure do |config|
|
|
89
92
|
# Normally, you have different bundles for client and server, thus, the default is false.
|
90
93
|
# Furthermore, if you are not hashing the server bundle (not in the manifest.json), then React on Rails
|
91
94
|
# will only look for the server bundle to be created in the typical file location, typically by
|
92
|
-
# a `webpack --watch` process.
|
95
|
+
# a `webpack --watch` process.
|
96
|
+
# If true, ensure that in config/webpacker.yml that you have both dev_server.hmr and
|
97
|
+
# dev_server.inline set to false.
|
93
98
|
config.same_bundle_for_client_and_server = false
|
94
99
|
|
95
100
|
# If set to true, this forces Rails to reload the server bundle if it is modified
|
@@ -134,6 +139,7 @@ ReactOnRails.configure do |config|
|
|
134
139
|
# Replace the following line to the location where you keep translation.js & default.js for use
|
135
140
|
# by the npm packages react-intl. Be sure this directory exists!
|
136
141
|
# config.i18n_dir = Rails.root.join("client", "app", "libs", "i18n")
|
142
|
+
#
|
137
143
|
# If not using the i18n feature, then leave this section commented out or set the value
|
138
144
|
# of config.i18n_dir to nil.
|
139
145
|
#
|
@@ -141,11 +147,11 @@ ReactOnRails.configure do |config|
|
|
141
147
|
# that will source for automatic generation on translations.js & default.js
|
142
148
|
# By default(without this option) all yaml files from Rails.root.join("config", "locales")
|
143
149
|
# and installed gems are loaded
|
144
|
-
config.i18n_yml_dir = Rails.root.join("config", "locales"
|
150
|
+
config.i18n_yml_dir = Rails.root.join("config", "locales")
|
145
151
|
|
146
152
|
# Possible output formats are js and json
|
147
153
|
# The default format is json
|
148
|
-
config.i18n_output_format = '
|
154
|
+
config.i18n_output_format = 'json'
|
149
155
|
|
150
156
|
################################################################################
|
151
157
|
################################################################################
|
@@ -186,7 +192,7 @@ ReactOnRails.configure do |config|
|
|
186
192
|
# CONFIGURE YOUR SOURCE FILES
|
187
193
|
# The test helper needs to know where your JavaScript files exist. The value is configured
|
188
194
|
# by your config/webpacker.yml source_path:
|
189
|
-
# source_path: client/app
|
195
|
+
# source_path: client/app # if using recommended /client directory
|
190
196
|
#
|
191
197
|
# Define the files we need to check for webpack compilation when running tests.
|
192
198
|
# The default is `%w( manifest.json )` as will be sufficient for most webpacker builds.
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# HMR and Hot Reloading with the webpack-dev-server
|
2
|
+
|
3
|
+
The webpack-dev-server provides:
|
4
|
+
|
5
|
+
1. Speedy compilation of client side assets
|
6
|
+
2. Optional HMR which means that the page will reload automatically when after
|
7
|
+
compilation completes. Note, some developers do not like this, as you'll
|
8
|
+
abruptly lose any tweaks within the Chrome development tools.
|
9
|
+
3. Optional hot-reloading. The older react-hot-loader has been deprecated in
|
10
|
+
favor of [fast-refresh](https://reactnative.dev/docs/fast-refresh).
|
11
|
+
For use with webpack, see [react-refresh-webpack-plugin](https://github.com/pmmmwh/react-refresh-webpack-plugin).
|
12
|
+
|
13
|
+
If you are ***not*** using server-side rendering (***not*** using `prerender: true`),
|
14
|
+
then you can follow all the regular docs for using the `bin/webpack-dev-server`
|
15
|
+
during development.
|
16
|
+
|
17
|
+
|
18
|
+
# Server Side Rendering with the Default rails/webpacker bin/webpack-dev-server
|
19
|
+
|
20
|
+
If you are using server-side rendering, then you have a couple options. The
|
21
|
+
recommended technique is to have a different webpack configuration for server
|
22
|
+
rendering.
|
23
|
+
|
24
|
+
|
25
|
+
|
26
|
+
|
27
|
+
## If you use the same Webpack setup for your server and client bundles
|
28
|
+
If you do use the webpack-dev-server for prerendering, be sure to set the
|
29
|
+
`config/initializers/react_on_rails.rb` setting of
|
30
|
+
|
31
|
+
```
|
32
|
+
config.same_bundle_for_client_and_server = true
|
33
|
+
```
|
34
|
+
|
35
|
+
`dev_server.hmr` maps to [devServer.hot](https://webpack.js.org/configuration/dev-server/#devserverhot).
|
36
|
+
This must be false if you're using the webpack-dev-server for client and server bundles.
|
37
|
+
|
38
|
+
`dev_server.inline` maps to [devServer.inline](https://webpack.js.org/configuration/dev-server/#devserverinline).
|
39
|
+
This must also be false.
|
40
|
+
|
41
|
+
If you don't configure these two to false, you'll see errors like:
|
42
|
+
|
43
|
+
* "ReferenceError: window is not defined" (if hmr is true)
|
44
|
+
* "TypeError: Cannot read property 'prototype' of undefined" (if inline is true)
|
45
|
+
|
46
|
+
|
47
|
+
|
48
|
+
|
49
|
+
|
@@ -1,9 +1,32 @@
|
|
1
1
|
# RSpec Configuration
|
2
2
|
_Click [here for minitest](./minitest-configuration.md)_
|
3
3
|
|
4
|
+
# If your webpack configurations correspond to rails/webpacker's default setup
|
5
|
+
If you're able to configure your webpack configuration to be run by having your webpack configuration
|
6
|
+
returned by the files in `/config/webpack`, then you have 2 options to ensure that your files are
|
7
|
+
compiled by webpack before running tests and during production deployment:
|
8
|
+
|
9
|
+
1. **Use rails/webpacker's compile option**: Configure your `config/webpacker.yml` so that `compile: true` is for `test` and `production`
|
10
|
+
environments. Ensure that your `source_path` is correct, or else `rails/webpacker` won't correctly
|
11
|
+
detect changes.
|
12
|
+
2. **Use the react_on_rails settings and helpers**. Use the settings in `config/initializers/react_on_rails.rb`. Refer to [docs/configuration](./configuration.md).
|
13
|
+
|
14
|
+
```yml
|
15
|
+
config.build_production_command = "RAILS_ENV=production bin/webpack"
|
16
|
+
config.build_test_command = "RAILS_ENV=test bin/webpack"
|
17
|
+
```
|
18
|
+
|
19
|
+
Which should you use? If you're already using the `rails/webpacker` way to configure webpack, then
|
20
|
+
you can keep things simple and use the `rails/webpacker` options.
|
21
|
+
|
22
|
+
# Checking for stale assets using React on Rails
|
23
|
+
|
4
24
|
Because you will probably want to run RSpec tests that rely on compiled webpack assets (typically, your integration/feature specs where `js: true`), you will want to ensure you don't accidentally run tests on missing or stale webpack assets. If you did use stale Webpack assets, you will get invalid test results as your tests do not use the very latest JavaScript code.
|
5
25
|
|
6
|
-
|
26
|
+
As mentioned above, you can configure `compile: true` in `config/webpacker.yml` _if_ you've got configuration for
|
27
|
+
your webpack in the standard `rails/webpacker` spot of `config/webpack/<NODE_ENV>.js`
|
28
|
+
|
29
|
+
ReactOnRails also provides a helper method called `ReactOnRails::TestHelper.configure_rspec_to_compile_assets`. Call this method from inside of the `RSpec.configure` block in your `spec/rails_helper.rb` file, passing the config as an argument. See file [lib/react_on_rails/test_helper.rb](../../lib/react_on_rails/test_helper.rb) for more details. You can customize this to your particular needs by replacing any of the default components used by `ReactOnRails::TestHelper.configure_rspec_to_compile_assets`.
|
7
30
|
|
8
31
|
```ruby
|
9
32
|
RSpec.configure do |config|
|
@@ -26,36 +49,25 @@ Please take note of the following:
|
|
26
49
|
|
27
50
|
- This utility uses your `build_test_command` to build the static generated files. This command **must not** include the `--watch` option. If you have different server and client bundle files, this command **must** create all the bundles. If you are using webpacker, the default value will come from the `config/webpacker.yml` value for the `public_output_path` and the `source_path`
|
28
51
|
|
29
|
-
- If you add an older file to your source files, that is already older than the produced output files, no new recompilation is done. The solution to this issue is to clear out your directory of webpack generated files when adding new source files that may have older dates. This
|
52
|
+
- If you add an older file to your source files, that is already older than the produced output files, no new recompilation is done. The solution to this issue is to clear out your directory of webpack generated files when adding new source files that may have older dates. This can happen when you've built your test generated files and then you sync up your repository files.
|
30
53
|
|
31
|
-
- By default, the webpack processes look
|
54
|
+
- By default, the webpack processes look in the webpack generated files folder, configured via the `config/webpacker.yml` config values of `public_root_path` and `public_output_path`. If the webpack generated files folder is missing, is empty, or contains files in the `config.webpack_generated_files` list with `mtime`s older than any of the files in your `client` folder, the helper will recompile your assets.
|
32
55
|
|
33
56
|
The following `config/react_on_rails.rb` settings **must** match your setup:
|
34
57
|
```ruby
|
35
|
-
# Directory where your generated assets go. All generated assets must go to the same directory.
|
36
|
-
# Configure this in your webpack config files. This relative to your Rails root directory.
|
37
|
-
# We recommend having different generated assets dirs per Rails env.
|
38
|
-
config.generated_assets_dir = File.join(%w[public webpack], Rails.env)
|
39
|
-
|
40
58
|
# Define the files we need to check for webpack compilation when running tests.
|
41
|
-
# Generally, the manifest.json is good enough for this check if using webpacker
|
42
59
|
config.webpack_generated_files = %w( manifest.json )
|
43
60
|
|
44
61
|
# OR if you're not hashing the server-bundle.js, then you should include your server-bundle.js in the list.
|
45
62
|
# config.webpack_generated_files = %w( server-bundle.js manifest.json )
|
46
63
|
|
47
|
-
# OR if you're not using webpacker, your setup might look like.
|
48
|
-
# config.webpack_generated_files = %w( client-bundle.js server-bundle.js )
|
49
|
-
|
50
64
|
# If you are using the ReactOnRails::TestHelper.configure_rspec_to_compile_assets(config)
|
51
65
|
# with rspec then this controls what yarn command is run
|
52
66
|
# to automatically refresh your webpack assets on every test run.
|
53
67
|
config.build_test_command = "yarn run build:test"
|
54
68
|
```
|
55
69
|
|
56
|
-
If you want to speed up the re-compiling process so you don't wait to run your tests to build the files, you can run your test compilation with the "watch" flags.
|
57
|
-
|
58
|
-
[spec/dummy](https://github.com/shakacode/react_on_rails/tree/master/spec/dummy) contains examples of how to set the proc files for this purpose.
|
70
|
+
If you want to speed up the re-compiling process so you don't wait to run your tests to build the files, you can run your test compilation with the "watch" flags. For example, `yarn run build:test --watch`
|
59
71
|
|
60
72
|
![2016-01-27_02-36-43](https://cloud.githubusercontent.com/assets/1118459/12611951/7c56d070-c4a4-11e5-8a80-9615f99960d9.png)
|
61
73
|
|
@@ -5,8 +5,14 @@ If you would like help in migrating between React on Rails versions or help with
|
|
5
5
|
|
6
6
|
We specialize in helping companies to quickly and efficiently move from versions before 9 to current. The older versions use the Rails asset pipeline to package client assets. The current and recommended way is to use Webpack 4 for asset preparation. You may also need help migrating from the `rails/webpacker`'s Webpack configuration to a better setup ready for Server Side Rendering.
|
7
7
|
|
8
|
-
## Upgrading to
|
8
|
+
## Upgrading to v12
|
9
9
|
* Make sure that you are on a relatively more recent version of rails and webpacker.
|
10
|
+
* If the webpacker webpack config files exist, then React on Rails will not override the default
|
11
|
+
assets:precompile setup by rails/webpacker. The fix is to remove the JS files inside of config/webpack,
|
12
|
+
like config/webpack/production.js.
|
13
|
+
* If you're using the internalization helper, then set `config.i18n_output_format = 'js'`. You can
|
14
|
+
later update to the default JSON format as you will need to update your usage of that file.
|
15
|
+
|
10
16
|
* Updated API for ReactOnRails.register.
|
11
17
|
|
12
18
|
In order to solve the issues regarding React Hooks compatibility, the number of parameters
|
data/docs/tutorial.md
CHANGED
@@ -119,31 +119,13 @@ foreman start -f Procfile.dev-hmr
|
|
119
119
|
|
120
120
|
Visit [http://localhost:3000/hello_world](http://localhost:3000/hello_world) and see your **React On Rails** app running!
|
121
121
|
|
122
|
-
*Note, foreman may default to PORT 5000 unless you set the value of PORT in your environment or in the Procfile.*
|
123
|
-
|
124
122
|
# HMR vs. React Hot Reloading
|
125
123
|
|
126
|
-
First, check that the `hmr`
|
127
|
-
|
128
|
-
The basic setup will have HMR working with the default webpacker setup. The basic HMR will cause
|
129
|
-
a full page refresh each time you save a file. You also lose any state on your page during the refresh. Don't try to use HMR
|
130
|
-
|
131
|
-
### Custom IP & PORT setup (Cloud9 example)
|
132
|
-
|
133
|
-
In case you are running some custom setup with different IP or PORT you should also edit Procfile.dev. For example to be able to run on free Cloud9 IDE we are putting IP 0.0.0.0 and PORT 8080. The default generated file `Procfile.dev` uses `-p 3000`.
|
134
|
-
|
135
|
-
``` Procfile.dev
|
136
|
-
web: rails s -p 8080 -b 0.0.0.0
|
137
|
-
```
|
124
|
+
First, check that the `hmr` and the `inline` options are `true` in your `config/webpacker.yml` file.
|
138
125
|
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
It's super important to exclude certain directories from RubyMine or else it will slow to a crawl as it tries to parse all the npm files.
|
144
|
-
|
145
|
-
* Generated files, per the settings in your `config/webpacker.yml`, which default to `public/packs` and `public/packs-test`
|
146
|
-
* `node_modules`
|
126
|
+
The basic setup will have HMR working with the default webpacker setup. The basic
|
127
|
+
[HMR](https://webpack.js.org/concepts/hot-module-replacement/), without a special
|
128
|
+
React setup, will cause a full page refresh each time you save a file.
|
147
129
|
|
148
130
|
## Deploying to Heroku
|
149
131
|
|
@@ -166,17 +148,16 @@ Set heroku to use multiple buildpacks:
|
|
166
148
|
|
167
149
|
### Swap out sqlite for postgres by doing the following:
|
168
150
|
|
169
|
-
|
151
|
+
Run these two commands:
|
170
152
|
|
171
|
-
```ruby
|
172
|
-
gem 'pg'
|
173
153
|
```
|
174
|
-
|
175
|
-
|
154
|
+
bundle remove sqlite3
|
155
|
+
bundle add pg
|
156
|
+
```
|
176
157
|
|
177
158
|
![07](https://cloud.githubusercontent.com/assets/20628911/17465015/1f2f4042-5cf4-11e6-8287-2fb077550809.png)
|
178
159
|
|
179
|
-
|
160
|
+
### Replace your `database.yml` file with this (assuming your app name is "ror").
|
180
161
|
|
181
162
|
```yml
|
182
163
|
default: &default
|
@@ -204,7 +185,6 @@ production:
|
|
204
185
|
Then you need to setup postgres so you can run locally:
|
205
186
|
|
206
187
|
```
|
207
|
-
bundle
|
208
188
|
rake db:setup
|
209
189
|
rake db:migrate
|
210
190
|
```
|
@@ -228,7 +208,7 @@ Create `/Procfile`. This is what Heroku uses to start your app.
|
|
228
208
|
web: bundle exec puma -C config/puma.rb
|
229
209
|
```
|
230
210
|
|
231
|
-
Note, newer versions of Rails create this file automatically. However, the [docs on Heroku](https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#config) have something a bit different, so please make it conform to those docs. As of
|
211
|
+
Note, newer versions of Rails create this file automatically. However, the [docs on Heroku](https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#config) have something a bit different, so please make it conform to those docs. As of 2020-06-04, the docs looked like this:
|
232
212
|
|
233
213
|
`config/puma.rb`
|
234
214
|
```rb
|
@@ -249,6 +229,15 @@ on_worker_boot do
|
|
249
229
|
end
|
250
230
|
```
|
251
231
|
|
232
|
+
Next, update your `package.json` to specify the version of yarn and node. Add this section:
|
233
|
+
|
234
|
+
```json
|
235
|
+
"engines": {
|
236
|
+
"node": "13.9.0",
|
237
|
+
"yarn": "1.22.4"
|
238
|
+
},
|
239
|
+
```
|
240
|
+
|
252
241
|
Then after all changes are done don't forget to commit them with git and finally you can push your app to Heroku!
|
253
242
|
|
254
243
|
```
|
@@ -339,6 +328,27 @@ So you get some basics from HMR with no code changes. If you want to go further,
|
|
339
328
|
|
340
329
|
React on Rails will automatically handle disabling server rendering if there is only one bundle file created by the Webpack development server by rails/webpacker.
|
341
330
|
|
331
|
+
|
332
|
+
### Custom IP & PORT setup (Cloud9 example)
|
333
|
+
|
334
|
+
In case you are running some custom setup with different IP or PORT you should also edit Procfile.dev. For example to be able to run on free Cloud9 IDE we are putting IP 0.0.0.0 and PORT 8080. The default generated file `Procfile.dev` uses `-p 3000`.
|
335
|
+
|
336
|
+
``` Procfile.dev
|
337
|
+
web: rails s -p 8080 -b 0.0.0.0
|
338
|
+
```
|
339
|
+
|
340
|
+
Then visit https://your-shared-addr.c9users.io:8080/hello_world
|
341
|
+
|
342
|
+
## RubyMine
|
343
|
+
|
344
|
+
It's super important to exclude certain directories from RubyMine or else it will slow to a crawl as it tries to parse all the npm files.
|
345
|
+
|
346
|
+
* Generated files, per the settings in your `config/webpacker.yml`, which default to `public/packs` and `public/packs-test`
|
347
|
+
* `node_modules`
|
348
|
+
|
349
|
+
|
350
|
+
|
351
|
+
|
342
352
|
## Conclusion
|
343
353
|
|
344
354
|
* Browse the docs either on the [gitbook](https://shakacode.gitbooks.io/react-on-rails/content/) or in the [docs directory on github](https://github.com/shakacode/react_on_rails/tree/master/docs)
|
@@ -1,18 +1,26 @@
|
|
1
|
+
# Procfile for development using HMR
|
2
|
+
|
1
3
|
web: rails s -p 3000
|
2
4
|
|
3
5
|
# Note, hot and live reloading don't work with the default generator setup on
|
4
6
|
# top of the rails/webpacker Webpack config with server rendering.
|
5
7
|
# If you have server rendering enabled (prerender is true), you either need to
|
6
|
-
# a.
|
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
|
7
15
|
fast enough.
|
8
|
-
#
|
9
|
-
# SSR with HMR and React hot loading
|
10
|
-
#
|
11
|
-
# the example in the https://github.com/shakacode/react-webpack-rails-tutorial
|
12
|
-
web: rails s -p 3000
|
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.
|
13
19
|
|
14
|
-
# Run the
|
20
|
+
# Run the webpack-dev-server for client and maybe server files
|
15
21
|
webpack-dev-server: bin/webpack-dev-server
|
16
22
|
|
17
|
-
# Keep the JS fresh for server rendering. Remove if not server rendering
|
18
|
-
|
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
|
data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb
CHANGED
@@ -6,7 +6,8 @@
|
|
6
6
|
ReactOnRails.configure do |config|
|
7
7
|
# This configures the script to run to build the production assets by webpack. Set this to nil
|
8
8
|
# if you don't want react_on_rails building this file for you.
|
9
|
-
|
9
|
+
# If nil, then the standard rails/webpacker assets:precompile will run
|
10
|
+
# config.build_production_command = nil
|
10
11
|
|
11
12
|
################################################################################
|
12
13
|
################################################################################
|
@@ -4,6 +4,14 @@ require "erb"
|
|
4
4
|
|
5
5
|
module ReactOnRails
|
6
6
|
module Locales
|
7
|
+
def self.compile
|
8
|
+
if ReactOnRails.configuration.i18n_output_format&.downcase == "js"
|
9
|
+
ReactOnRails::Locales::ToJs.new
|
10
|
+
else
|
11
|
+
ReactOnRails::Locales::ToJson.new
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
7
15
|
class Base
|
8
16
|
def initialize
|
9
17
|
return if i18n_dir.nil?
|
data/lib/tasks/assets.rake
CHANGED
@@ -1,13 +1,25 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# Important: The default assets:precompile is modified ONLY if the rails/webpacker webpack config
|
4
|
+
# does not exist!
|
5
|
+
|
3
6
|
require "active_support"
|
4
7
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
+
ENV["RAILS_ENV"] ||= ENV["RACK_ENV"] || "development"
|
9
|
+
ENV["NODE_ENV"] ||= "development"
|
10
|
+
webpacker_webpack_config_abs_path = File.join(Rails.root, "config/webpack/#{ENV["NODE_ENV"]}.js")
|
11
|
+
webpack_config_path = Pathname.new(webpacker_webpack_config_abs_path).relative_path_from(Rails.root).to_s
|
12
|
+
|
13
|
+
unless File.exists?(webpacker_webpack_config_abs_path)
|
14
|
+
if Rake::Task.task_defined?("assets:precompile")
|
15
|
+
Rake::Task["assets:precompile"].enhance do
|
16
|
+
Rake::Task["react_on_rails:assets:webpack"].invoke
|
17
|
+
puts "Invoking task wepacker:clean from React on Rails"
|
18
|
+
Rake::Task["webpacker:clean"].invoke
|
19
|
+
end
|
20
|
+
else
|
21
|
+
Rake::Task.define_task("assets:precompile" => ["react_on_rails:assets:webpack"])
|
8
22
|
end
|
9
|
-
else
|
10
|
-
Rake::Task.define_task("assets:precompile" => ["react_on_rails:assets:webpack"])
|
11
23
|
end
|
12
24
|
|
13
25
|
# Sprockets independent tasks
|
@@ -18,6 +30,9 @@ namespace :react_on_rails do
|
|
18
30
|
Uses command defined with ReactOnRails.configuration.build_production_command
|
19
31
|
|
20
32
|
sh "#{ReactOnRails::Utils.prepend_cd_node_modules_directory('<ReactOnRails.configuration.build_production_command>')}"
|
33
|
+
|
34
|
+
Note: This command is not automatically added to assets:precompile if the rails/webpacker
|
35
|
+
configuration file #{webpack_config_path} exists.
|
21
36
|
DESC
|
22
37
|
task webpack: :locale do
|
23
38
|
if ReactOnRails.configuration.build_production_command.present?
|
data/lib/tasks/locale.rake
CHANGED
@@ -12,10 +12,6 @@ namespace :react_on_rails do
|
|
12
12
|
the "ReactOnRails.configuration.i18n_dir".
|
13
13
|
DESC
|
14
14
|
task locale: :environment do
|
15
|
-
|
16
|
-
ReactOnRails::Locales::ToJs.new
|
17
|
-
else
|
18
|
-
ReactOnRails::Locales::ToJson.new
|
19
|
-
end
|
15
|
+
ReactOnRails::Locales.compile
|
20
16
|
end
|
21
17
|
end
|
data/package.json
CHANGED
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.0.0.pre.beta.
|
4
|
+
version: 12.0.0.pre.beta.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Gordon
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-06-
|
11
|
+
date: 2020-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -359,6 +359,7 @@ files:
|
|
359
359
|
- docs/basics/configuration.md
|
360
360
|
- docs/basics/deployment.md
|
361
361
|
- docs/basics/generator-details.md
|
362
|
+
- docs/basics/hmr-and-hot-reloading-with-the-webpack-dev-server.md
|
362
363
|
- docs/basics/i18n.md
|
363
364
|
- docs/basics/installation-into-an-existing-rails-app.md
|
364
365
|
- docs/basics/migrating-from-react-rails.md
|