react-rails 2.4.0 โ†’ 2.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4586c8d2591bde9c2178f1de220f14c3884c16d7
4
- data.tar.gz: 1c54fe20b0b905c97661d687f65122de5b98677f
3
+ metadata.gz: 42eec1443d0268c4dfcc8e691b06d505dd1e7c3a
4
+ data.tar.gz: 8611400bfabb5185e1a6c508ee665549fbf71f98
5
5
  SHA512:
6
- metadata.gz: a51d45669c4df0a0d9b55197f01e3614151242903e72898b52ab0efba36ca02cd6cbd11bd9ba39b4ccb729049d2b9b7c3e30272a0fe62af98cfe42f4184864c6
7
- data.tar.gz: 20611f02888d93304035e188cf6377b335c174cfdafa902ac4f4c06fe9d5a4dde417a097409950cf6e56baab4699dfcb3227a341575cfb6cd1f5e15c85a00786
6
+ metadata.gz: 43f5b84c1c7deb4a6fa20d29b206d9001232037b0c753577e46d8ccd7d82311bb11af44ae827740cb973130bd4187493a591da1c088733aed8043ab3ec6d10d6
7
+ data.tar.gz: bdd331ed7aa76e90267621d1fa89532ccd143ab351953953825941fab5857b8288d33db6af249289dd9ac837cbe24aa5c94b0fd790886226d80c609d219499a3
@@ -8,12 +8,26 @@
8
8
 
9
9
  #### Bug Fixes
10
10
 
11
+ ## 2.4.1
12
+
13
+ #### Breaking Changes
14
+
15
+ #### New Features
16
+ - Webpacker gets ES6 components by default #822
17
+ - ReactDOM.hydrate() #828
18
+ - Documentation updates #830
19
+
20
+ #### Deprecation
21
+
22
+ #### Bug Fixes
23
+ - Webpacker local manifest sometimes had double asset_hosts if the dev server was running #834 thanks @joeyparis
24
+
11
25
  ## 2.4.0
12
26
 
13
27
  #### Breaking Changes
14
28
 
15
29
  - (Sprockets) Prebundled React upgraded to 16 #792
16
- - (Sprockets) Addons removed # 792
30
+ - (Sprockets) Addons removed #792
17
31
 
18
32
  #### New Features
19
33
 
data/README.md CHANGED
@@ -1,51 +1,66 @@
1
- # react-rails
1
+ # React-Rails
2
2
 
3
3
  [![Gem](https://img.shields.io/gem/v/react-rails.svg?style=flat-square)](http://rubygems.org/gems/react-rails)
4
+ [![npm](https://img.shields.io/npm/v/react_ujs.svg?style=flat-square)](https://www.npmjs.com/package/react_ujs)
4
5
  [![Build Status](https://img.shields.io/travis/reactjs/react-rails/master.svg?style=flat-square)](https://travis-ci.org/reactjs/react-rails)
5
6
  [![Gemnasium](https://img.shields.io/gemnasium/reactjs/react-rails.svg?style=flat-square)](https://gemnasium.com/reactjs/react-rails)
6
7
  [![Code Climate](https://img.shields.io/codeclimate/github/reactjs/react-rails.svg?style=flat-square)](https://codeclimate.com/github/reactjs/react-rails)
7
- [![Test Coverage](https://img.shields.io/codeclimate/coverage/github/reactjs/react-rails.svg?style=flat-square)](https://codeclimate.com/github/reactjs/react-rails/coverage)
8
8
 
9
- Gem version 2.4.x onwards and master will no longer have React Addons.
10
9
 
11
- If you need to make changes for the prebundled react, see the migration docs here:
12
- https://reactjs.org/blog/2016/11/16/react-v15.4.0.html
13
- https://reactjs.org/blog/2017/04/07/react-v15.5.0.html
14
- https://reactjs.org/blog/2017/06/13/react-v15.6.0.html
15
-
16
- `react-rails` makes it easy to use [React](http://facebook.github.io/react/) and [JSX](http://facebook.github.io/react/docs/jsx-in-depth.html) in your Ruby on Rails (3.2+) application. Learn more:
17
-
18
- - React's [Getting Started guide](https://facebook.github.io/react/docs/getting-started.html)
19
- - Use React & JSX [with Webpacker](#use-with-webpacker) or [with the asset pipeline](#use-with-asset-pipeline)
20
- - Rendering [components in views](#view-helper) or [in controller actions](#controller-actions)
21
- - [Server-side rendering](#server-side-rendering)
22
- - [Generating components](#component-generator) in various formats
23
- - [`ReactRailsUJS`](#ujs) for mounting and unmounting components
24
- - Automatically [camelizing props](#camelize-props)
10
+ React-Rails is a flexible tool to use [React](http://facebook.github.io/react/) with Rails. It:
11
+ * Automatically renders React server-side and client-side
12
+ * Supports Webpacker 3.x, 2.x, 1.1+
13
+ * Supports Sprockets 4.x, 3.x, 2.x
14
+ * Lets you use [JSX](http://facebook.github.io/react/docs/jsx-in-depth.html), [ES6](http://es6-features.org/), [Coffeescript](http://coffeescript.org/)
15
+
16
+ Example app code available here: https://github.com/BookOfGreg/react-rails-example-app
17
+
18
+ <!-- START doctoc generated TOC please keep comment here to allow auto update -->
19
+ <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
20
+ ## Contents
21
+
22
+ - [Get started with Webpacker](#get-started-with-webpacker)
23
+ - [File naming](#file-naming)
24
+ - [Use with Asset Pipeline](#use-with-asset-pipeline)
25
+ - [Custom JSX Transformer](#custom-jsx-transformer)
26
+ - [React.js versions](#reactjs-versions)
27
+ - [View Helper](#view-helper)
28
+ - [Custom View Helper](#custom-view-helper)
29
+ - [UJS](#ujs)
30
+ - [Mounting & Unmounting](#mounting--unmounting)
31
+ - [Event Handling](#event-handling)
32
+ - [`getConstructor`](#getconstructor)
33
+ - [Server-Side Rendering](#server-side-rendering)
34
+ - [Configuration](#configuration)
35
+ - [JavaScript State](#javascript-state)
36
+ - [Custom Server Renderer](#custom-server-renderer)
37
+ - [Controller Actions](#controller-actions)
38
+ - [Component Generator](#component-generator)
39
+ - [Use with JBuilder](#use-with-jbuilder)
40
+ - [Camelize Props](#camelize-props)
41
+ - [Upgrading](#upgrading)
42
+ - [2.3 to 2.4](#23-to-24)
25
43
  - [Related Projects](#related-projects)
26
- - [Developing](#development) the gem
44
+ - [Contributing](#contributing)
27
45
 
28
- ## Installation
46
+ <!-- END doctoc generated TOC please keep comment here to allow auto update -->
29
47
 
30
- Install from Rubygems as `react-rails`.
31
48
 
32
- ```ruby
33
- gem "react-rails"
34
- ```
49
+ The React-Rails Wiki has lots of additional information about React-Rails including many "how-to" articles and answers to the most frequently asked questions. Please browse the Wiki after finishing this README:
35
50
 
36
- Get started with `rails g react:install`:
51
+ https://github.com/reactjs/React-Rails/wiki
37
52
 
38
- ```
39
- $ rails g react:install
40
- ```
41
53
 
42
- ## Use with Webpacker
54
+ ## Get started with Webpacker
43
55
 
44
- [Webpacker](https://github.com/rails/webpacker) integrates modern JS tooling with Rails. `ReactRailsUJS` allows you to gradually migrate to Webpacker.
56
+ [or Get started with Sprockets](#use-with-asset-pipeline)
45
57
 
46
- Get started by adding `webpacker` to your gemfile and installing `webpacker` and `react-rails`:
58
+ [Webpacker](https://github.com/rails/webpacker) integrates modern JS tooling with Rails.
59
+
60
+ Add `webpacker` and `react-rails` to your gemfile and run the installers:
47
61
 
48
62
  ```
63
+ $ bundle install
49
64
  $ rails webpacker:install
50
65
  $ rails webpacker:install:react
51
66
  $ rails generate react:install
@@ -57,7 +72,15 @@ This gives you:
57
72
  - [`ReactRailsUJS`](#ujs) setup in `app/javascript/packs/application.js`
58
73
  - `app/javascript/packs/server_rendering.js` for [server-side rendering](#server-side-rendering)
59
74
 
60
- When you add a component to `app/javascript/components/`, you can [render it in a Rails view](#view-helper):
75
+ Generate your first component:
76
+
77
+ ```
78
+ $ rails g react:component HelloWorld greeting:string
79
+ ```
80
+
81
+ Your component is added to `app/javascript/components/` by default.
82
+
83
+ [Render it in a Rails view](#view-helper):
61
84
 
62
85
  ```erb
63
86
  <%= react_component("HelloWorld", { greeting: "Hello" }) %>
@@ -74,8 +97,6 @@ The component name tells `react-rails` where to load the component. For example:
74
97
 
75
98
  This way, you can access top-level, default, or named exports.
76
99
 
77
- If `require` fails, `react-rails` falls back to the global namespace approach described in [Use with Asset Pipeline](#use-with-asset-pipeline).
78
-
79
100
  The `require.context` inserted into `packs/application.js` is used to load components. If you want to load components from a different directory, override it by calling `ReactRailsUJS.useContext`:
80
101
 
81
102
  ```js
@@ -85,7 +106,12 @@ var ReactRailsUJS = require("react_ujs")
85
106
  ReactRailsUJS.useContext(myCustomContext)
86
107
  ```
87
108
 
88
- ### Gotcha: Capitalization
109
+ If `require` fails to find your component, [`ReactRailsUJS`](#ujs) falls back to the global namespace, described in [Use with Asset Pipeline](#use-with-asset-pipeline).
110
+
111
+ ### File naming
112
+
113
+ React-Rails supports plenty of file extensions such as: .js, .jsx.js, .js.jsx, .es6.js, .coffee, etcetera!
114
+ Sometimes this will cause a stumble when searching for filenames.
89
115
 
90
116
  Component File Name | `react_component` call
91
117
  -----|-----
@@ -97,7 +123,7 @@ Component File Name | `react_component` call
97
123
 
98
124
  ## Use with Asset Pipeline
99
125
 
100
- `react-rails` provides React.js & a UJS driver to the Rails asset pipeline. Get started by installing:
126
+ `react-rails` provides a pre-bundled React.js & a UJS driver to the Rails asset pipeline. Get started by installing:
101
127
 
102
128
  ```
103
129
  $ rails g react:install
@@ -113,7 +139,7 @@ This will:
113
139
 
114
140
  Now, you can create React components in `.jsx` files:
115
141
 
116
- ```js
142
+ ```JSX
117
143
  // app/assets/javascripts/components/post.jsx
118
144
 
119
145
  window.Post = createReactClass({
@@ -171,7 +197,7 @@ MyApp::Application.configure do
171
197
  end
172
198
  ```
173
199
 
174
- Be sure to restart your Rails server after changing these files. See [VERSIONS.md](https://github.com/reactjs/react-rails/blob/master/VERSIONS.md) to learn which version of React.js is included with your `react-rails` version.
200
+ Be sure to restart your Rails server after changing these files. See [VERSIONS.md](https://github.com/reactjs/react-rails/blob/master/VERSIONS.md) to learn which version of React.js is included with your `react-rails` version. In some edge cases you may need to bust the sprockets cache with `rake tmp:clear`
175
201
 
176
202
 
177
203
  ## View Helper
@@ -402,7 +428,7 @@ rails g react:component Post title:string published:bool published_by:instanceOf
402
428
 
403
429
  would generate:
404
430
 
405
- ```js
431
+ ```JSX
406
432
  var Post = createReactClass({
407
433
  propTypes: {
408
434
  title: PropTypes.string,
@@ -480,29 +506,43 @@ You can also specify this option in `react_component`:
480
506
  <%= react_component('HelloMessage', {name: 'John'}, {camelize_props: true}) %>
481
507
  ```
482
508
 
509
+ ## Upgrading
510
+
511
+ ### 2.3 to 2.4
512
+
513
+ Keep your `react_ujs` up to date, `yarn upgrade`
514
+
515
+ React-Rails 2.4.x uses React 16+ which no longer has React Addons. Therefore the pre-bundled version of react no longer has an addons version, if you need addons still, there is the 2.3.1+ version of the gem that still has addons.
516
+
517
+ If you need to make changes in your components for the prebundled react, see the migration docs here:
518
+
519
+ - https://reactjs.org/blog/2016/11/16/react-v15.4.0.html
520
+ - https://reactjs.org/blog/2017/04/07/react-v15.5.0.html
521
+ - https://reactjs.org/blog/2017/06/13/react-v15.6.0.html
522
+
523
+
524
+ For the vast majority of cases this will get you most of the migration:
525
+ - global find+replace `React.Prop` -> `Prop`
526
+ - add `import PropTypes from 'prop-types'` (Webpacker only)
527
+ - re-run `bundle exec rails webpacker:install:react` to update npm packages (Webpacker only)
528
+
483
529
  ## Related Projects
484
530
 
485
- - [react\_on\_rails Gem](https://github.com/shakacode/react_on_rails): Integration of React with Rails utilizing Webpack, Babel, React, Redux, React-Router.
486
- - [Ruby Hyperloop](http://ruby-hyperloop.org/): Use Ruby to build reactive user interfaces with React.
487
- - [react-rails-hot-loader](https://github.com/rmosolgo/react-rails-hot-loader) is a simple live-reloader for `react-rails`.
488
- - [react-rails-benchmark_renderer](https://github.com/pboling/react-rails-benchmark_renderer) adds performance instrumentation to server rendering.
531
+ - [webpacker-react](https://github.com/renchap/webpacker-react): Integration of React with Rails utilizing Webpack with Hot Module Replacement (HMR).
489
532
  - [The Free React on Rails Course](https://learnetto.com/users/hrishio/courses/the-free-react-on-rails-5-course) A free video course which teaches the basics of React and how to get started using it in Rails with `react-rails`.
533
+ - [react\_on\_rails](https://github.com/shakacode/react_on_rails): Integration of React with Rails utilizing Webpack, Redux, React-Router.
534
+ - [react-rails-hot-loader](https://github.com/rmosolgo/react-rails-hot-loader) Simple live-reloader for `react-rails`.
535
+ - [react-rails-benchmark_renderer](https://github.com/pboling/react-rails-benchmark_renderer) adds performance instrumentation to server rendering.
536
+ - [Ruby Hyperloop](http://ruby-hyperloop.org/): Use Ruby to build reactive user interfaces with React.
537
+
538
+ ## Contributing
539
+
540
+ ๐ŸŽ‰ Thanks for taking the time to contribute! ๐ŸŽ‰
541
+
542
+ With 2 Million+ downloads of the react-rails Gem and another 100k+ downloads of react_ujs on NPM, you're helping the biggest React + Rails community!
543
+
544
+ By contributing to React-Rails, you agree to abide by the [code of conduct](https://github.com/reactjs/react-rails/blob/master/CODE_OF_CONDUCT.md).
545
+
546
+ You can always help by submitting patches or triaging issues, even offering reproduction steps to issues is incredibly helpful!
490
547
 
491
- ## Development
492
-
493
- - Run tests with `rake test` or `appraisal rake test`
494
- - Integration tests run in Headless Chrome which is included in Chrome (59+ linux,OSX | 60+ Windows)
495
- - ChromeDriver is included with `chromedriver-helper` gem so no need to manually install that ๐Ÿ‘
496
- - Update React assets with `rake react:update`
497
- - Update the UJS with `rake ujs:update`
498
- - Releases:
499
- - To release a new RubyGems version:
500
- - Increment the version in `lib/react/rails/version.rb`
501
- - Add an entry to `VERSIONS.md`
502
- - Update the changelog (find recent changes on GitHub by listing commits or showing closed PRs)
503
- - Commit changes & push to master
504
- - `bundle exec rake release`: pushes a tag to GitHub, builds a `.gem`, and pushes to RubyGems
505
- - To release a new NPM version:
506
- - Update the version in `react_ujs/package.json`
507
- - Commit & push to master
508
- - `bundle exec rake ujs:publish` (runs `npm publish`)
548
+ Please see our [Contribution guide](https://github.com/reactjs/react-rails/blob/master/CONTRIBUTING.md) for more info.
@@ -315,7 +315,7 @@ var ReactRailsUJS = {
315
315
  }
316
316
  throw new Error(message + ". Make sure your component is available to render.")
317
317
  } else {
318
- ReactDOM.render(React.createElement(constructor, props), node);
318
+ ReactDOM.hydrate(React.createElement(constructor, props), node);
319
319
  }
320
320
  }
321
321
  },
@@ -90,11 +90,10 @@ module React
90
90
  }
91
91
 
92
92
  def create_component_file
93
- template_extension = case
94
- when options[:es6]
95
- 'es6.jsx'
96
- when options[:coffee]
93
+ template_extension = if options[:coffee]
97
94
  'js.jsx.coffee'
95
+ elsif options[:es6] || webpacker?
96
+ 'es6.jsx'
98
97
  else
99
98
  'js.jsx'
100
99
  end
@@ -2,6 +2,6 @@ module React
2
2
  module Rails
3
3
  # If you change this, make sure to update VERSIONS.md
4
4
  # and republish the UJS by updating package.json and `bundle exec rake ujs:publish`
5
- VERSION = '2.4.0'
5
+ VERSION = '2.4.1'
6
6
  end
7
7
  end
@@ -42,6 +42,8 @@ module React
42
42
  asset_path = Webpacker.manifest.lookup(logical_path).to_s
43
43
  if Webpacker.dev_server.running?
44
44
  ds = Webpacker.dev_server
45
+ # Remove the protocol and host from the asset path. Sometimes webpacker includes this, sometimes it does not
46
+ asset_path.slice!("#{ds.protocol}://#{ds.host_with_port}")
45
47
  dev_server_asset = open("#{ds.protocol}://#{ds.host_with_port}#{asset_path}").read
46
48
  dev_server_asset.sub!(CLIENT_REQUIRE, '//\0')
47
49
  dev_server_asset
metadata CHANGED
@@ -1,15 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: react-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paul Oโ€™Shannessy
8
8
  - Robert Mosolgo
9
+ - Gregory Myers
9
10
  autorequire:
10
11
  bindir: bin
11
12
  cert_chain: []
12
- date: 2017-10-22 00:00:00.000000000 Z
13
+ date: 2017-11-06 00:00:00.000000000 Z
13
14
  dependencies:
14
15
  - !ruby/object:Gem::Dependency
15
16
  name: appraisal
@@ -282,6 +283,7 @@ description: Render components in views or controller actions. Server-side rende
282
283
  email:
283
284
  - paul@oshannessy.com
284
285
  - rmosolgo@gmail.com
286
+ - neonmd@hotmail.co.uk
285
287
  executables: []
286
288
  extensions: []
287
289
  extra_rdoc_files: []