react_on_rails 4.0.0.beta.1 → 4.0.0.beta.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.eslintignore +1 -0
- data/.gitignore +2 -1
- data/.jscsrc +1 -0
- data/.rubocop.yml +3 -0
- data/.travis.yml +1 -1
- data/CHANGELOG.md +12 -4
- data/Gemfile +0 -5
- data/README.md +10 -3
- data/Rakefile +3 -0
- data/app/helpers/react_on_rails_helper.rb +21 -18
- data/docs/additional_reading/manual_installation.md +2 -2
- data/docs/additional_reading/optional_configuration.md +1 -1
- data/docs/additional_reading/rspec_configuration.md +3 -1
- data/docs/additional_reading/turbolinks.md +4 -3
- data/docs/contributing.md +1 -1
- data/docs/tutorial-v2.md +1 -1
- data/lib/generators/react_on_rails/base_generator.rb +20 -16
- data/lib/generators/react_on_rails/bootstrap_generator.rb +1 -1
- data/lib/generators/react_on_rails/templates/base/base/Procfile.dev-hot.tt +1 -1
- data/lib/generators/react_on_rails/templates/base/base/Procfile.dev.tt +1 -1
- data/lib/generators/react_on_rails/templates/base/base/client/webpack.client.rails.config.js +1 -1
- data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb.tt +11 -1
- data/lib/generators/react_on_rails/templates/base/base/lib/tasks/assets.rake.tt +1 -1
- data/lib/generators/react_on_rails/templates/base/server_rendering/client/webpack.server.rails.config.js +1 -1
- data/lib/react_on_rails/configuration.rb +51 -11
- data/lib/react_on_rails/controller.rb +2 -2
- data/lib/react_on_rails/server_rendering_pool.rb +2 -2
- data/lib/react_on_rails/test_helper.rb +31 -25
- data/lib/react_on_rails/test_helper/ensure_assets_compiled.rb +84 -34
- data/lib/react_on_rails/test_helper/webpack_assets_compiler.rb +20 -12
- data/lib/react_on_rails/test_helper/webpack_assets_status_checker.rb +35 -32
- data/lib/react_on_rails/test_helper/webpack_process_checker.rb +17 -13
- data/lib/react_on_rails/utils.rb +5 -0
- data/lib/react_on_rails/version.rb +1 -1
- data/package.json +1 -2
- data/rakelib/node_package.rake +1 -8
- data/rakelib/run_rspec.rake +29 -10
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7201a4cf1cd742f3daa732436004d85ca67b8703
|
4
|
+
data.tar.gz: 02719ebb4f5feb84506f83b10417e864ca5ca6ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 41cfaad0da66d9771852126d6f64cb3615d080a827ec8a5a3be328f0f69f4d7a135d15b26a0cf5e4d79900a8634bcfbd6dae9b1ffc1d103e9633ffd4d57e8981
|
7
|
+
data.tar.gz: 8ecb0b33b5b958408917eee8ca024756448c00553b0d863163ee4ffbf371f66c22cf282fbee526d925810e07dac42db7a46ee06798c3dc6a153bbefa53f39a69
|
data/.eslintignore
CHANGED
data/.gitignore
CHANGED
data/.jscsrc
CHANGED
data/.rubocop.yml
CHANGED
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -7,18 +7,26 @@ Contributors: please follow the recommendations outlined at [keepachangelog.com]
|
|
7
7
|
## [4.0.0.rc.1] - 2016-03-06
|
8
8
|
##### Added
|
9
9
|
- Added controller `module ReactOnRails::Controller`. Adds method `redux_store` to setup redux stores in the view.
|
10
|
+
- Added option `defer: true` for view helper `redux_store`. This allows the view helper to specify the props for store hydration, yet still render the props at the bottom of the view.
|
10
11
|
- Added view helper `redux_store_hydration_data` to render the props on the application's layout, near the bottom. This allows for the client hydration data to be parsed after the server rendering, which may result in a faster load time.
|
11
12
|
- Added helpers `env_stylesheet_link_tag` and `env_javascript_include_tag` to support hot reloading Rails. See the [README.md](./README.md) for more details and see the example application in `spec/dummy`.
|
12
13
|
- The checker for outdated bundles before running tests will default to including the directory with `server_bundle_js_file`.
|
13
|
-
|
14
|
+
- Better support for Turbolinks 5!
|
15
|
+
- Fixed generator check of uncommitted code for foreign languages. See [#303](https://github.com/shakacode/react_on_rails/pull/303) by [nmatyukov](https://github.com/nmatyukov).
|
16
|
+
- Added several parameters used for ensuring webpack assets are built for running tests:
|
17
|
+
- `config.generated_assets_dir`: Directory where your generated webpack assets go. You can have only **one** directory for this.
|
18
|
+
- `config.webpack_generated_files`: List of files that will get created in the `generated_assets_dir`. The test runner helper will ensure these generated files are newer than any of the files in the client directory.
|
19
|
+
##### Changed
|
20
|
+
- Generator default for webpack generated assets is now `app/assets/webpack` as we use this for both JavaScript and CSS generated assets.
|
14
21
|
##### Fixed
|
15
|
-
- The test runner assets up to date checker
|
22
|
+
- The test runner assets up to date checker is greatly improved.
|
16
23
|
- Lots of doc updates!
|
17
24
|
- Improved the **spec/dummy** sample app so that it supports CSS modules, hot reloading, etc, and it can server as a template for a new ReactOnRails installation.
|
18
25
|
|
19
26
|
##### Breaking Changes
|
20
|
-
- Deprecated `redux_store
|
21
|
-
-
|
27
|
+
- Deprecated calling `redux_store(store_name, props)`. The API has changed. Use `redux_store(store_name, props: props, defer: false)` A new option called `defer` allows the rendering of store hydration at the bottom of the your layout. Place `redux_store_hydration_data` on your layout.
|
28
|
+
- `config.server_bundle_js_file` has changed. The default value is now blank, meaning no server rendering. Addtionally, if you specify the file name, you should not include the path, as that should be specified in the `config.generated_assets_dir`.
|
29
|
+
- `config.generated_assets_dirs` has been renamed to `config.generated_assets_dir` (singular) and it only takes one directory.
|
22
30
|
|
23
31
|
|
24
32
|
## [3.0.6] - 2016-03-01
|
data/Gemfile
CHANGED
@@ -8,12 +8,9 @@ gemspec
|
|
8
8
|
# bundle install from a single Gemfile. Therefore, all gems that we will need for any dummy/example
|
9
9
|
# app have to be manually added to this file.
|
10
10
|
gem "bootstrap-sass"
|
11
|
-
gem "chromedriver-helper"
|
12
11
|
gem "coffee-rails", "~> 4.1.0"
|
13
12
|
gem "jbuilder", "~> 2.0"
|
14
13
|
gem "jquery-rails"
|
15
|
-
gem "launchy"
|
16
|
-
gem "poltergeist"
|
17
14
|
gem "puma"
|
18
15
|
gem "rails", "4.2.5"
|
19
16
|
gem "rails_12factor"
|
@@ -35,12 +32,10 @@ gem "web-console", "~> 2.0", group: :development
|
|
35
32
|
|
36
33
|
# below are copied from spec/dummy/Gemfile
|
37
34
|
gem "rspec-rails"
|
38
|
-
gem "coveralls", require: false
|
39
35
|
gem "capybara"
|
40
36
|
gem "capybara-screenshot"
|
41
37
|
gem "capybara-webkit"
|
42
38
|
gem "chromedriver-helper"
|
43
|
-
gem "generator_spec"
|
44
39
|
gem "launchy"
|
45
40
|
gem "poltergeist"
|
46
41
|
gem "selenium-webdriver"
|
data/README.md
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
[![Build Status](https://travis-ci.org/shakacode/react_on_rails.svg?branch=master)](https://travis-ci.org/shakacode/react_on_rails) [![Dependency Status](https://gemnasium.com/shakacode/react_on_rails.svg)](https://gemnasium.com/shakacode/react_on_rails) [![Gem Version](https://badge.fury.io/rb/react_on_rails.svg)](https://badge.fury.io/rb/react_on_rails) [![npm version](https://badge.fury.io/js/react-on-rails.svg)](https://badge.fury.io/js/react-on-rails) [![Code Climate](https://codeclimate.com/github/shakacode/react_on_rails/badges/gpa.svg)](https://codeclimate.com/github/shakacode/react_on_rails) [![Coverage Status](https://coveralls.io/repos/shakacode/react_on_rails/badge.svg?branch=master&service=github)](https://coveralls.io/github/shakacode/react_on_rails?branch=master)
|
2
2
|
|
3
3
|
# NEWS
|
4
|
-
|
4
|
+
* 4.0.0 Highlights
|
5
|
+
* Better support for Turbolinks 5.
|
6
|
+
* Controller rendering of shared redux stores.
|
5
7
|
* 2016-02-28: We added a [Projects page](PROJECTS.md). Please edit the page your project or [email us](mailto:contact@shakacode.com) and we'll add you. We also love stars as it helps us attract new users and contributors. [jbhatab](https://github.com/jbhatab) is leading an effort to ease the onboarding process for newbies with simpler project generators. See [#245](https://github.com/shakacode/react_on_rails/issues/245).
|
6
8
|
* 3.0.6 shipped on Tuesday, 2016-03-01. Please see the [Changelog](CHANGELOG.md) for details, and let us know if you see any issues! [Migration steps from 1.x](https://github.com/shakacode/react_on_rails/blob/master/CHANGELOG.md#migration-steps-v1-to-v2). [Migration steps from 2.x](https://github.com/shakacode/react_on_rails/blob/master/CHANGELOG.md#migration-steps-v2-to-v3).
|
7
9
|
* [RubyGems](https://rubygems.org/gems/react_on_rails/)
|
@@ -171,7 +173,7 @@ cd client && npm i --saveDev react-on-rails
|
|
171
173
|
That will install the latest version and update your package.json.
|
172
174
|
|
173
175
|
## How it Works
|
174
|
-
The generator installs your webpack files in the `client` folder. Foreman uses webpack to compile your code and output the bundled results to `app/assets/
|
176
|
+
The generator installs your webpack files in the `client` folder. Foreman uses webpack to compile your code and output the bundled results to `app/assets/webpack`, which are then loaded by sprockets. These generated bundle files have been added to your `.gitignore` for your convenience.
|
175
177
|
|
176
178
|
Inside your Rails views, you can now use the `react_component` helper method provided by React on Rails. You can pass props directly to the react component helper. You can also initialize a Redux store with view helper `redux_store` so that the store can be shared amongst multiple React components. Your best bet is to scan the code inside of the [/spec/dummy](spec/dummy) sample app.
|
177
179
|
|
@@ -222,7 +224,7 @@ Place your JavaScript code inside of the provided `client/app` folder. Use modul
|
|
222
224
|
In general, you may want different initialization for your server rendered components.
|
223
225
|
|
224
226
|
## ReactOnRails View Helpers API
|
225
|
-
Once the bundled files have been generated in your `app/assets/
|
227
|
+
Once the bundled files have been generated in your `app/assets/webpack` folder and you have exposed your components globally, you will want to run your code in your Rails views using the included helper method.
|
226
228
|
|
227
229
|
This is how you actually render the React components you exposed to `window` inside of `clientRegistration` (and `global` inside of `serverRegistration` if you are server rendering).
|
228
230
|
|
@@ -574,6 +576,11 @@ Note: If you have components from react-rails you want to use, then you will nee
|
|
574
576
|
foreman start
|
575
577
|
```
|
576
578
|
|
579
|
+
## Dependencies
|
580
|
+
+ Ruby 2.1 or greater
|
581
|
+
+ Rails 3.2 or greater
|
582
|
+
+ Node 5.5 or great
|
583
|
+
|
577
584
|
## Contributing
|
578
585
|
Bug reports and pull requests are welcome. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to our version of the [Contributor Covenant Code of Conduct](docs/code_of_conduct.md)).
|
579
586
|
|
data/Rakefile
CHANGED
@@ -19,7 +19,7 @@ module ReactOnRailsHelper
|
|
19
19
|
# <%= env_stylesheet_link_tag(static: 'application_static',
|
20
20
|
# hot: 'application_non_webpack',
|
21
21
|
# media: 'all',
|
22
|
-
# 'data-turbolinks-track' =>
|
22
|
+
# 'data-turbolinks-track' => "reload") %>
|
23
23
|
#
|
24
24
|
# <!-- These do not use turbolinks, so no data-turbolinks-track -->
|
25
25
|
# <!-- This is to load the hot assets. -->
|
@@ -29,7 +29,9 @@ module ReactOnRailsHelper
|
|
29
29
|
# <!-- These do use turbolinks -->
|
30
30
|
# <%= env_javascript_include_tag(static: 'application_static',
|
31
31
|
# hot: 'application_non_webpack',
|
32
|
-
# 'data-turbolinks-track' =>
|
32
|
+
# 'data-turbolinks-track' => "reload") %>
|
33
|
+
#
|
34
|
+
# NOTE: for Turbolinks 2.x, use 'data-turbolinks-track' => true
|
33
35
|
# See application.html.erb for usage example
|
34
36
|
# https://github.com/shakacode/react-webpack-rails-tutorial/blob/master/app%2Fviews%2Flayouts%2Fapplication.html.erb
|
35
37
|
def env_javascript_include_tag(args = {})
|
@@ -104,7 +106,6 @@ module ReactOnRailsHelper
|
|
104
106
|
|
105
107
|
# Setup the page_loaded_js, which is the same regardless of prerendering or not!
|
106
108
|
# The reason is that React is smart about not doing extra work if the server rendering did its job.
|
107
|
-
turbolinks_loaded = Object.const_defined?(:Turbolinks)
|
108
109
|
|
109
110
|
props = {} if props.nil?
|
110
111
|
|
@@ -112,7 +113,6 @@ module ReactOnRailsHelper
|
|
112
113
|
component_name: react_component_name,
|
113
114
|
props: props,
|
114
115
|
trace: trace(options),
|
115
|
-
expect_turbolinks: turbolinks_loaded,
|
116
116
|
dom_id: dom_id
|
117
117
|
}
|
118
118
|
|
@@ -146,24 +146,27 @@ module ReactOnRailsHelper
|
|
146
146
|
HTML
|
147
147
|
end
|
148
148
|
|
149
|
-
# Deprecated: Use `redux_store` via including ReactOnRails::Controller in your controller and calling
|
150
|
-
# redux_store.
|
151
|
-
#
|
152
149
|
# Separate initialization of store from react_component allows multiple react_component calls to
|
153
150
|
# use the same Redux store.
|
154
151
|
#
|
155
152
|
# store_name: name of the store, corresponding to your call to ReactOnRails.registerStores in your
|
156
153
|
# JavaScript code.
|
157
154
|
# props: Ruby Hash or JSON string which contains the properties to pass to the redux store.
|
158
|
-
|
159
|
-
|
160
|
-
|
155
|
+
# Options
|
156
|
+
# defer: false -- pass as true if you wish to render this below your component.
|
157
|
+
def redux_store(store_name, props: {}, defer: false)
|
161
158
|
redux_store_data = { store_name: store_name,
|
162
159
|
props: props }
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
160
|
+
if defer
|
161
|
+
@registered_stores_defer_render ||= []
|
162
|
+
@registered_stores_defer_render << redux_store_data
|
163
|
+
"YOU SHOULD NOT SEE THIS ON YOUR VIEW -- Uses as a code block, like <% redux_store %> "\
|
164
|
+
"and not <%= redux store %>"
|
165
|
+
else
|
166
|
+
@registered_stores ||= []
|
167
|
+
@registered_stores << redux_store_data
|
168
|
+
render_redux_store_data(redux_store_data)
|
169
|
+
end
|
167
170
|
end
|
168
171
|
|
169
172
|
# Place this view helper (no parameters) at the end of your shared layout. This tell
|
@@ -172,8 +175,8 @@ module ReactOnRailsHelper
|
|
172
175
|
# client side rendering of this hydration data, which is a hidden div with a matching class
|
173
176
|
# that contains a data props.
|
174
177
|
def redux_store_hydration_data
|
175
|
-
return if @
|
176
|
-
@
|
178
|
+
return if @registered_stores_defer_render.blank?
|
179
|
+
@registered_stores_defer_render.reduce("") do |accum, redux_store_data|
|
177
180
|
accum << render_redux_store_data(redux_store_data)
|
178
181
|
end.html_safe
|
179
182
|
end
|
@@ -300,10 +303,10 @@ module ReactOnRailsHelper
|
|
300
303
|
end
|
301
304
|
|
302
305
|
def initialize_redux_stores
|
303
|
-
return "" unless @registered_stores.present? || @
|
306
|
+
return "" unless @registered_stores.present? || @registered_stores_defer_render.present?
|
304
307
|
declarations = "var reduxProps, store, storeGenerator;\n"
|
305
308
|
|
306
|
-
all_stores = (@registered_stores || []) + (@
|
309
|
+
all_stores = (@registered_stores || []) + (@registered_stores_defer_render || [])
|
307
310
|
|
308
311
|
result = all_stores.each_with_object(declarations) do |redux_store_data, memo|
|
309
312
|
store_name = redux_store_data[:store_name]
|
@@ -43,7 +43,7 @@ See the next section for a sample webpack.server.rails.config.js.
|
|
43
43
|
```javascript
|
44
44
|
entry: ['./app/startup/serverRegistration'],
|
45
45
|
```
|
46
|
-
3. Ensure the name of your ouput file (shown [here](https://github.com/shakacode/react-webpack-rails-tutorial/blob/537c985dc82faee333d80509343ca32a3965f9dd/client/webpack.server.rails.config.js#L9)) of your server bundle corresponds to the configuration of the gem. The default path is `app/assets/
|
46
|
+
3. Ensure the name of your ouput file (shown [here](https://github.com/shakacode/react-webpack-rails-tutorial/blob/537c985dc82faee333d80509343ca32a3965f9dd/client/webpack.server.rails.config.js#L9)) of your server bundle corresponds to the configuration of the gem. The default path is `app/assets/webpack`. See below for customization of configuration variables.
|
47
47
|
4. Expose `React` in your webpack config, like [this](https://github.com/shakacode/react-webpack-rails-tutorial/blob/master/client/webpack.server.rails.build.config.js#L54-L55)
|
48
48
|
|
49
49
|
```javascript
|
@@ -65,7 +65,7 @@ module.exports = {
|
|
65
65
|
entry: ['./app/startup/serverRegistration'],
|
66
66
|
output: {
|
67
67
|
filename: 'server-bundle.js',
|
68
|
-
path: '../app/assets/
|
68
|
+
path: '../app/assets/webpack',
|
69
69
|
|
70
70
|
// CRITICAL to set libraryTarget: 'this' for enabling Rails to find the exposed modules IF you
|
71
71
|
// use the "expose" webpackfunctionality. See startup/serverRegistration.jsx.
|
@@ -10,7 +10,7 @@ ReactOnRails.configure do |config|
|
|
10
10
|
# Client bundles are configured in application.js
|
11
11
|
# Server bundle is a single file for all server rendering of components.
|
12
12
|
# Set the server_bundle_js_file to "" if you know that you will not be server rendering.
|
13
|
-
config.server_bundle_js_file = "
|
13
|
+
config.server_bundle_js_file = "server-bundle.js" # This is the default
|
14
14
|
|
15
15
|
# Below options can be overriden by passing to the helper method.
|
16
16
|
config.prerender = false # default is false
|
@@ -13,10 +13,12 @@ You can pass an RSpec metatag as an optional second parameter to this helper met
|
|
13
13
|
|
14
14
|
Please take note of the following:
|
15
15
|
- This utility assumes your build tasks for the static generated files are `npm run build:client` and `npm run build:server` and do not have the `--watch` option enabled.
|
16
|
-
- By default, the webpack processes look for the `app/assets/
|
16
|
+
- By default, the webpack processes look for the `app/assets/webpack` folders. If this folder is missing, is empty, or contains files with `mtime`s older than any of the files in your `client` folder, the helper will recompile your assets. You can override this inside of `config/initializers/react_on_rails.rb` by passing a filepath (relative to the root of the app) to the `generated_assets_dir` configuration option.
|
17
17
|
|
18
18
|
If you want to speed up the re-compiling process, you can call `npm run build:dev:client` (and `npm run build:dev:server` if doing server rendering) to have webpack run in "watch" mode and recompile these files in the background, which will be much faster when making incremental changes than compiling from scratch.
|
19
19
|
|
20
|
+
[spec/dummy](../../spec/dummy) contains examples of how to set the proc files for this purpose.
|
21
|
+
|
20
22
|
If you want to use a testing framework other than RSpec, please submit let us know on the changes you need to do and we'll update the docs.
|
21
23
|
|
22
24
|
![2016-01-27_02-36-43](https://cloud.githubusercontent.com/assets/1118459/12611951/7c56d070-c4a4-11e5-8a80-9615f99960d9.png)
|
@@ -13,14 +13,15 @@ the JavaScript and stylesheets are cached by the browser, as they will still req
|
|
13
13
|
1. Include the gem "turbolinks".
|
14
14
|
1. Included the proper "track" tags when you include the javascript and stylesheet:
|
15
15
|
```erb
|
16
|
-
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' =>
|
17
|
-
<%= javascript_include_tag 'application', 'data-turbolinks-track' =>
|
16
|
+
<%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => 'reload' %>
|
17
|
+
<%= javascript_include_tag 'application', 'data-turbolinks-track' => 'reload' %>
|
18
18
|
```
|
19
|
+
NOTE: for Turbolinks 2.x, use 'data-turbolinks-track' => true
|
19
20
|
1. Add turbolinks to your `application.js` file:
|
20
21
|
```javascript
|
21
22
|
//= require turbolinks
|
22
23
|
```
|
23
|
-
Note, in the future, we
|
24
|
+
Note, in the future, we will change to installing this via npm.
|
24
25
|
|
25
26
|
## Turbolinks 5
|
26
27
|
Turbolinks 5 is now being supported. React on Rails will automatically detect which version of Turbolinks you are using and use the correct event handlers.
|
data/docs/contributing.md
CHANGED
@@ -16,7 +16,7 @@ It's critical to configure your IDE/editor to ignore certain directories. Otherw
|
|
16
16
|
* /gen-examples
|
17
17
|
* /node_package/lib
|
18
18
|
* /node_modules
|
19
|
-
* /spec/dummy/app/assets/
|
19
|
+
* /spec/dummy/app/assets/webpack
|
20
20
|
* /spec/dummy/log
|
21
21
|
* /spec/dummy/node_modules
|
22
22
|
* /spec/dummy/tmp
|
data/docs/tutorial-v2.md
CHANGED
@@ -127,7 +127,7 @@ Completed all linting
|
|
127
127
|
|
128
128
|
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.
|
129
129
|
|
130
|
-
* `app/assets/
|
130
|
+
* `app/assets/webpack`
|
131
131
|
* `client/node_modules`
|
132
132
|
|
133
133
|
<img src="http://forum.shakacode.com/uploads/default/original/1X/a1b3e1146d86915f7d5d1c89548e81ec208458cc.png" width="338" height="500">
|
@@ -59,7 +59,7 @@ module ReactOnRails
|
|
59
59
|
node_modules
|
60
60
|
|
61
61
|
# Generated js bundles
|
62
|
-
/app/assets/
|
62
|
+
/app/assets/webpack/*
|
63
63
|
DATA
|
64
64
|
|
65
65
|
if dest_file_exists?(".gitignore")
|
@@ -74,11 +74,11 @@ module ReactOnRails
|
|
74
74
|
// DO NOT REQUIRE jQuery or jQuery-ujs in this file!
|
75
75
|
// DO NOT REQUIRE TREE!
|
76
76
|
|
77
|
-
// CRITICAL that
|
77
|
+
// CRITICAL that vendor-bundle must be BEFORE bootstrap-sprockets and turbolinks
|
78
78
|
// since it is exposing jQuery and jQuery-ujs
|
79
79
|
|
80
|
-
//= require
|
81
|
-
//= require
|
80
|
+
//= require vendor-bundle
|
81
|
+
//= require app-bundle
|
82
82
|
|
83
83
|
DATA
|
84
84
|
|
@@ -161,22 +161,26 @@ module ReactOnRails
|
|
161
161
|
template("base/base/lib/tasks/assets.rake.tt", "lib/tasks/assets.rake")
|
162
162
|
end
|
163
163
|
|
164
|
+
ASSETS_RB_APPEND = <<-DATA.strip_heredoc
|
165
|
+
# Add client/assets/ folders to asset pipeline's search path.
|
166
|
+
# If you do not want to move existing images and fonts from your Rails app
|
167
|
+
# you could also consider creating symlinks there that point to the original
|
168
|
+
# rails directories. In that case, you would not add these paths here.
|
169
|
+
Rails.application.config.assets.paths << Rails.root.join("client", "assets", "stylesheets")
|
170
|
+
Rails.application.config.assets.paths << Rails.root.join("client", "assets", "images")
|
171
|
+
Rails.application.config.assets.paths << Rails.root.join("client", "assets", "fonts")
|
172
|
+
Rails.application.config.assets.precompile += %w( server-bundle.js )
|
173
|
+
|
174
|
+
# Add folder with webpack generated assets to assets.paths
|
175
|
+
Rails.application.config.assets.paths << Rails.root.join("app", "assets", "webpack")
|
176
|
+
DATA
|
177
|
+
|
164
178
|
def append_to_assets_initializer
|
165
|
-
data = <<-DATA.strip_heredoc
|
166
|
-
# Add client/assets/ folders to asset pipeline's search path.
|
167
|
-
# If you do not want to move existing images and fonts from your Rails app
|
168
|
-
# you could also consider creating symlinks there that point to the original
|
169
|
-
# rails directories. In that case, you would not add these paths here.
|
170
|
-
Rails.application.config.assets.paths << Rails.root.join("client", "assets", "stylesheets")
|
171
|
-
Rails.application.config.assets.paths << Rails.root.join("client", "assets", "images")
|
172
|
-
Rails.application.config.assets.paths << Rails.root.join("client", "assets", "fonts")
|
173
|
-
Rails.application.config.assets.precompile += %w( generated/server-bundle.js )
|
174
|
-
DATA
|
175
179
|
assets_intializer = File.join(destination_root, "config/initializers/assets.rb")
|
176
180
|
if File.exist?(assets_intializer)
|
177
|
-
append_to_file(assets_intializer,
|
181
|
+
append_to_file(assets_intializer, ASSETS_RB_APPEND)
|
178
182
|
else
|
179
|
-
create_file(assets_intializer,
|
183
|
+
create_file(assets_intializer, ASSETS_RB_APPEND)
|
180
184
|
end
|
181
185
|
end
|
182
186
|
|
@@ -68,7 +68,7 @@ module ReactOnRails
|
|
68
68
|
def add_bootstrap_sprockets_to_application_js
|
69
69
|
data = <<-DATA.strip_heredoc
|
70
70
|
|
71
|
-
// bootstrap-sprockets depends on
|
71
|
+
// bootstrap-sprockets depends on vendor-bundle for jQuery.
|
72
72
|
//= require bootstrap-sprockets
|
73
73
|
|
74
74
|
DATA
|
@@ -1,4 +1,4 @@
|
|
1
1
|
web: rails s
|
2
2
|
# TODO: MIGRATE from tutorial
|
3
|
-
client: sh -c 'rm app/assets/
|
3
|
+
client: sh -c 'rm app/assets/webpack/* || true && cd client && npm run build:dev:client'
|
4
4
|
<%- if options.server_rendering? %>server: sh -c 'cd client && npm run build:dev:server'<%- end %>
|
@@ -1,3 +1,3 @@
|
|
1
1
|
web: rails s
|
2
|
-
client: sh -c 'rm app/assets/
|
2
|
+
client: sh -c 'rm app/assets/webpack/* || true && cd client && npm run build:dev:client'
|
3
3
|
<%- if options.server_rendering? %>server: sh -c 'cd client && npm run build:dev:server'<%- end %>
|
data/lib/generators/react_on_rails/templates/base/base/config/initializers/react_on_rails.rb.tt
CHANGED
@@ -2,11 +2,21 @@
|
|
2
2
|
ReactOnRails.configure do |config|
|
3
3
|
# Client bundles are configured in application.js
|
4
4
|
|
5
|
+
# Directory where your generated assets go
|
6
|
+
config.generated_assets_dir = File.join(%w(app assets webpack))
|
7
|
+
|
8
|
+
# Define the files for we need to check for webpack compilation when running tests
|
9
|
+
<%- if options.server_rendering? %>
|
10
|
+
config.webpack_generated_files = %w( client-bundle.js server-bundle.js )
|
11
|
+
<% else %>
|
12
|
+
config.webpack_generated_files = %w( client-bundle.js )
|
13
|
+
<%- end %>
|
14
|
+
|
5
15
|
# Server rendering:
|
6
16
|
# Server bundle is a single file for all server rendering of components.
|
7
17
|
# Set the server_bundle_js_file to "" if you know that you will not be server rendering.
|
8
18
|
<%- if options.server_rendering? %>
|
9
|
-
config.server_bundle_js_file = "
|
19
|
+
config.server_bundle_js_file = "server-bundle.js"
|
10
20
|
<% else %>
|
11
21
|
config.server_bundle_js_file = ""
|
12
22
|
<%- end %>
|