react_webpack_rails 0.0.1 → 0.0.2

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: 29f27718bf4f9c516d3de813560b52b5e7164d19
4
- data.tar.gz: 1090c7f9014ddacb6e58c5f7a298c6dcce17d2f3
3
+ metadata.gz: 23e61ad851d49804d84cff1615b14aa4ddec2ba8
4
+ data.tar.gz: 0adf9b76662d547ae6e2c22de4d117ce129669cd
5
5
  SHA512:
6
- metadata.gz: de6c1cad348f6ce13aa40898e3e4472aeda9c83169199b21bc6208a5bf2ecf3d084f1191d73b2c0025d5b4bc3687db3447bb7d97eca45ca25c95ddff46f6e797
7
- data.tar.gz: da62d8986d8184501c58bdd881b3a688ff81dee2f42d5858521572acb5bf46f6ea3c1fece8e1c43d60dff8896160face39139f8ed6a2f334be8f73d488db521a
6
+ metadata.gz: 858c4be7c690ebb7784d2caee695bae07984b3d09c428c26775a5640bd205c27c06af4692d694e09fe481876182fecd944e640641e57e74517b08a9a0afd5f14
7
+ data.tar.gz: 28d0dc73a1bb691ae1062e72d9551811452dc4a48e967f5f79e179b40671da3a600590cccd5e110e47d6430073b6a58c8d06f8172ee38d6927f28d8d0fc6fe3a
data/CHANGELOG.md ADDED
@@ -0,0 +1,25 @@
1
+ ## (0.0.2)
2
+ * using rails like names
3
+ * simplifying webpack setup
4
+ * making `registerComponent` helper part of ujs,
5
+
6
+ ### migration 0.0.1 -> 0.0.2
7
+ * in `application.js` replace:
8
+
9
+ ```js
10
+ //= require react-integration
11
+ //= require generated/bundle
12
+ ```
13
+
14
+ with:
15
+ ```js
16
+ //= require react_integration
17
+ //= require react_bundle
18
+ ```
19
+
20
+ ## (0.0.1) Initial release
21
+ * generators for webpack configuration
22
+ * helpers:
23
+ * js - `registerComponent` exposing component for rails
24
+ * rails - `react_component` using component based on https://github.com/reactjs/react-rails/blob/master/lib/react/rails/view_helper.rb
25
+ * integration script based on https://github.com/reactjs/react-rails/blob/master/lib/assets/javascripts/react_ujs.js.erb
data/README.md CHANGED
@@ -1,8 +1,6 @@
1
1
  # ReactWebpackRails
2
-
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/react_webpack_rails`. To experiment with that code, run `bin/console` for an interactive prompt.
4
-
5
- TODO: Delete this and the text above, and describe your gem
2
+ #### Rails - webpack setup with react integration.
3
+ Inspired and partially based on https://github.com/reactjs/react-rails/ this gem provides generators and helpers that makes rails-webpack-react integration easy.
6
4
 
7
5
  ## Installation
8
6
 
@@ -12,7 +10,7 @@ Add this line to your application's Gemfile:
12
10
  gem 'react_webpack_rails'
13
11
  ```
14
12
 
15
- And then execute:
13
+ Execute:
16
14
 
17
15
  $ bundle
18
16
 
@@ -20,9 +18,45 @@ Or install it yourself as:
20
18
 
21
19
  $ gem install react_webpack_rails
22
20
 
21
+ Then run installation:
22
+
23
+ $ rails g react_webpack_rails:install
24
+
25
+ Generate `react_bundle` for first time:
26
+
27
+ $ webpack
28
+
29
+ And require integration and bundle files in `application.js`
30
+
31
+ ```js
32
+ //= require react_integration
33
+ //= require react_bundle
34
+ ```
35
+
23
36
  ## Usage
37
+ 1. Register component in index.js
24
38
 
25
- TODO: Write usage instructions here
39
+ ```js
40
+ import Component from 'some-component';
41
+
42
+ registerComponent('customComponentName', Component)
43
+ ```
44
+
45
+ 2. Use it in view
46
+
47
+ ```erb
48
+ <%= react_component('customComponentName', { user: User.last })
49
+ ```
50
+
51
+ #### Development
52
+ Run webpack in watch mode so it will react on any file change.
53
+
54
+ webpack -w
55
+
56
+ #### Production
57
+ Run webpack in production mode before compiling assets
58
+
59
+ webpack -p
26
60
 
27
61
  ## Development
28
62
 
@@ -32,10 +66,9 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
32
66
 
33
67
  ## Contributing
34
68
 
35
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/react_webpack_rails.
69
+ Bug reports and pull requests are welcome on GitHub at https://github.com/netguru/react_webpack_rails.
36
70
 
37
71
 
38
72
  ## License
39
73
 
40
74
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
41
-
@@ -6,19 +6,15 @@
6
6
  // jQuery is optional. Use it to support legacy browsers.
7
7
  var $ = (typeof window.jQuery !== 'undefined') && window.jQuery;
8
8
 
9
- window.reactComponents = {};
10
- window.registerComponent = function (name, component) {
11
- window.reactComponents[name] = component;
12
- };
13
-
14
9
  // create the namespace
15
10
  window.ReactRailsUJS = {
16
11
  CLASS_NAME_ATTR: 'data-react-class',
17
12
  PROPS_ATTR: 'data-react-props',
18
13
  RAILS_ENV_DEVELOPMENT: <%= Rails.env == "development" %>,
14
+ reactComponents: {},
19
15
  // helper method for the mount and unmount methods to find the
20
16
  // `data-react-class` DOM elements
21
- findDOMNodes: function(searchSelector) {
17
+ _findDOMNodes: function(searchSelector) {
22
18
  // we will use fully qualified paths as we do not bind the callbacks
23
19
  var selector;
24
20
  if (typeof searchSelector === 'undefined') {
@@ -34,8 +30,12 @@
34
30
  }
35
31
  },
36
32
 
33
+ registerComponent: function (name, component) {
34
+ window.ReactRailsUJS.reactComponents[name] = component;
35
+ },
36
+
37
37
  mountComponents: function(searchSelector) {
38
- var nodes = window.ReactRailsUJS.findDOMNodes(searchSelector);
38
+ var nodes = window.ReactRailsUJS._findDOMNodes(searchSelector);
39
39
 
40
40
  for (var i = 0; i < nodes.length; ++i) {
41
41
  var node = nodes[i];
@@ -44,7 +44,7 @@
44
44
  // Assume className is simple and can be found at top-level (window).
45
45
  // Fallback to eval to handle cases like 'My.React.ComponentName'.
46
46
 
47
- var constructor = window.reactComponents[className] || eval.call(window, className);
47
+ var constructor = window.ReactRailsUJS.reactComponents[className] || eval.call(window, className);
48
48
  var propsJson = node.getAttribute(window.ReactRailsUJS.PROPS_ATTR);
49
49
  var props = propsJson && JSON.parse(propsJson);
50
50
 
@@ -53,7 +53,7 @@
53
53
  },
54
54
 
55
55
  unmountComponents: function(searchSelector) {
56
- var nodes = window.ReactRailsUJS.findDOMNodes(searchSelector);
56
+ var nodes = window.ReactRailsUJS._findDOMNodes(searchSelector);
57
57
 
58
58
  for (var i = 0; i < nodes.length; ++i) {
59
59
  var node = nodes[i];
@@ -63,6 +63,9 @@
63
63
  }
64
64
  };
65
65
 
66
+ // expose registerComponent globally
67
+ window.registerComponent = ReactRailsUJS.registerComponent;
68
+
66
69
  // functions not exposed publicly
67
70
  function handleTurbolinksEvents () {
68
71
  var handleEvent;
@@ -2,8 +2,8 @@ module.exports = {
2
2
  context: __dirname + '/app/react',
3
3
  entry: './index',
4
4
  output: {
5
- path: __dirname + '/app/assets/javascripts/generated',
6
- filename: 'bundle.js'
5
+ path: __dirname + '/app/assets/javascripts',
6
+ filename: 'react_bundle.js'
7
7
  },
8
8
  module: {
9
9
  loaders: [
@@ -1,3 +1,3 @@
1
1
  module ReactWebpackRails
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: react_webpack_rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafał Gawlik
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2015-08-22 00:00:00.000000000 Z
12
+ date: 2015-08-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -64,13 +64,14 @@ files:
64
64
  - ".gitignore"
65
65
  - ".rspec"
66
66
  - ".travis.yml"
67
+ - CHANGELOG.md
67
68
  - Gemfile
68
69
  - LICENSE.txt
69
70
  - README.md
70
71
  - Rakefile
71
72
  - bin/console
72
73
  - bin/setup
73
- - lib/assets/javascripts/react-integration.js.erb
74
+ - lib/assets/javascripts/react_integration.js.erb
74
75
  - lib/generators/react_webpack_rails/USAGE
75
76
  - lib/generators/react_webpack_rails/install_generator.rb
76
77
  - lib/generators/react_webpack_rails/templates/hello-world-test.jsx