react_webpack_rails 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3dedadf24fa2870a3a88a55a64aa0eb3621da825
4
- data.tar.gz: dbf9547a683c1796873a5fd36f5b6def0f04a537
3
+ metadata.gz: ab94298add2a819ece6deb843faba11d9854eb57
4
+ data.tar.gz: 3f287303ddad42a74f2f1940e730648a1fb22c72
5
5
  SHA512:
6
- metadata.gz: 52b54c004400fbfbc56901524e73e5dbc9bfecfad0fe436da5e7d8830f03b0bbdea2c53cf24c560866245704152449205c16bcd5d415f5b4b0c561be3cdb5a4c
7
- data.tar.gz: 5fe97c37924eb22bbda98aef4603980658917fc10a0027f3a5554c5982c7448231a352b058ba135615aac290c04c0d3523d4f54376b86a166ab7fe280bdaf32d
6
+ metadata.gz: 19e00ab4020c5446abc04f4591ae2dd2a1d9ae41904d73596d4761ce6164f7481ef9cd1c62620aa9fb8a0970f4e03d326cb174c5a9bf2b5d7cbc334a6296d0a7
7
+ data.tar.gz: 168c1019d826949b794ada7d57628729cda4757a2e94d790b50dd73c3eb47d3c9f717a8201b4e25834c05f78bf9b87d3b4403970a78b9cb53da78d7a75183388
data/README.md CHANGED
@@ -19,6 +19,7 @@ See [0.4-stable](https://github.com/netguru/react_webpack_rails/tree/0.4-stable)
19
19
  * [rwr-alt](https://github.com/netguru/rwr-alt) plugin that makes it possible to populate and share Alt stores between react component located in different parts of rails views.
20
20
  * [rwr-redux](https://github.com/netguru/rwr-redux) allows to use redux state containers in a rails views.
21
21
  * [rwr-react_router](https://github.com/netguru/rwr-react_router) react-router integration.
22
+ * [rwr-view_helpers](https://github.com/netguru/rwr-view_helpers) handy view helpers.
22
23
 
23
24
  ## Installation
24
25
 
@@ -13,10 +13,20 @@ class ReactIntegration {
13
13
  this.renderComponentToString = this.renderComponentToString.bind(this);
14
14
  }
15
15
 
16
- registerComponent(name, component) {
16
+ registerComponent(...args) {
17
+ if (typeof args[0] === 'object') {
18
+ const component = args[0];
19
+ this.components = Object.assign({}, this.components, component);
20
+ }
21
+
22
+ const [name, component] = args;
17
23
  this.components[name] = component;
18
24
  }
19
25
 
26
+ registerComponents(components) {
27
+ this.components = Object.assign({}, this.components, components);
28
+ }
29
+
20
30
  getComponent(name) {
21
31
  return this.components[name];
22
32
  }
data/js/src/version.js CHANGED
@@ -1 +1 @@
1
- export default '0.5.0';
1
+ export default '0.6.0';
@@ -15,6 +15,18 @@ class HelloComponent extends React.Component {
15
15
  }
16
16
  }
17
17
 
18
+ class FooComponent extends React.Component {
19
+ static propTypes() {
20
+ return {
21
+ username: PropTypes.string.isRequired,
22
+ };
23
+ }
24
+
25
+ render() {
26
+ return (<div>Foo! Bar!</div>);
27
+ }
28
+ }
29
+
18
30
  describe('ReactIntegration', function () {
19
31
  afterEach(function () {
20
32
  subject.components = {};
@@ -27,10 +39,23 @@ describe('ReactIntegration', function () {
27
39
  });
28
40
 
29
41
  describe('#registerComponent', function () {
30
- it('adds component to the components storage', function () {
42
+ it('registers component using separate args', function () {
31
43
  subject.registerComponent('HelloWorld', HelloComponent);
32
44
  expect(subject.components.HelloWorld).toBe(HelloComponent);
33
45
  });
46
+
47
+ it('registers component using Object', function () {
48
+ subject.registerComponent({ HelloComponent });
49
+ expect(subject.components.HelloComponent).toBe(HelloComponent);
50
+ });
51
+ });
52
+
53
+ describe('#registerComponents', function () {
54
+ it('adds multiple components', function () {
55
+ subject.registerComponents({ HelloComponent, FooComponent });
56
+ expect(subject.components.HelloComponent).toBe(HelloComponent);
57
+ expect(subject.components.FooComponent).toBe(FooComponent);
58
+ });
34
59
  });
35
60
 
36
61
  describe('#getComponent', function () {
@@ -0,0 +1,31 @@
1
+ module ReactWebpackRails
2
+ module Install
3
+ require 'generators/react_webpack_rails/merge_helpers'
4
+
5
+ class ViewHelpersGenerator < Rails::Generators::Base
6
+ include MergeHelpers
7
+ desc 'Add View Helpers setup'
8
+ source_root File.expand_path('../../templates', __FILE__)
9
+
10
+ class_option :tmp_package,
11
+ type: :boolean,
12
+ default: false,
13
+ desc: 'Force update tmp/package.json instead package.json'
14
+
15
+ def package
16
+ merge_options = options.tmp_package \
17
+ ? { package_file: 'tmp/package.json', force: true } \
18
+ : {}
19
+ merge_into_package 'packages/view-helpers.json', merge_options
20
+ end
21
+
22
+ def add_rwr_view_helpers
23
+ append_file 'Gemfile' do
24
+ <<-'RB'.strip_heredoc
25
+ gem 'rwr-view_helpers', '~> 0.1.1'
26
+ RB
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -23,14 +23,20 @@ module ReactWebpackRails
23
23
  type: :boolean,
24
24
  default: false,
25
25
  desc: 'Run redux generator'
26
+ class_option :view_helpers,
27
+ type: :boolean,
28
+ default: true,
29
+ desc: 'Run view helpers generator'
26
30
 
27
31
  def generate_core
28
32
  generate 'react_webpack_rails:install:core --tmp-package'
29
33
  end
30
34
 
31
- def generate_hot_reload
32
- return unless options.hot_reload
33
- generate 'react_webpack_rails:install:hot_reload --tmp-package'
35
+ def generate_example
36
+ return unless options.example
37
+ example_generator = 'react_webpack_rails:install:example'
38
+ example_generator += ' --server-side' if options.server_side
39
+ generate example_generator
34
40
  end
35
41
 
36
42
  def generate_server_side
@@ -38,25 +44,28 @@ module ReactWebpackRails
38
44
  generate 'react_webpack_rails:install:server_side --tmp-package'
39
45
  end
40
46
 
47
+ def generate_hot_reload
48
+ return unless options.hot_reload
49
+ generate 'react_webpack_rails:install:hot_reload --tmp-package'
50
+ end
51
+
41
52
  def generate_karma_setup
42
53
  return unless options.karma_setup
43
54
  generate 'react_webpack_rails:install:karma_setup --tmp-package'
44
55
  end
45
56
 
46
- def generate_example
47
- return unless options.example
48
- example_generator = 'react_webpack_rails:install:example'
49
- example_generator += ' --server-side' if options.server_side
50
- generate example_generator
51
- end
52
-
53
57
  def generate_redux
54
58
  return unless options.redux
55
59
  generate 'react_webpack_rails:install:redux --tmp_package'
56
60
  end
57
61
 
62
+ def generate_view_helpers
63
+ return unless options.view_helpers
64
+ generate 'react_webpack_rails:install:view_helpers --tmp_package'
65
+ end
66
+
58
67
  def copy_package
59
- create_file 'package.json', File.read(Rails.root.join('tmp/package.json'))
68
+ create_file 'package.json', File.read(Rails.root.join('tmp', 'package.json'))
60
69
  end
61
70
 
62
71
  def cleanup
@@ -64,7 +73,6 @@ module ReactWebpackRails
64
73
  end
65
74
 
66
75
  def install_gems
67
- return unless options.redux
68
76
  run 'bundle install'
69
77
  end
70
78
 
@@ -0,0 +1,5 @@
1
+ {
2
+ "dependencies": {
3
+ "rwr-view-helpers": "^0.1.1"
4
+ }
5
+ }
@@ -1,38 +1,49 @@
1
- global.__RWR_ENV__ = {};
2
1
  require('babel-core/register');
3
- const IM = require('react-webpack-rails').integrationsManager;
4
2
  require('./index');
5
3
 
4
+ const fs = require('fs');
5
+ const path = require('path');
6
6
  const http = require('http');
7
7
  const dispatcher = require('httpdispatcher');
8
+ const { integrationsManager } = require('react-webpack-rails');
9
+
8
10
  const PORT = 8081;
11
+ const ASSETS_MAPPING_PATH = 'tmp/cache/assets-mapping.json';
9
12
 
10
- function handleRequest(request, response){
11
- try {
12
- console.log(`started: ${request.method} "${request.url}" at ${new Date().toLocaleTimeString()}`);
13
- dispatcher.dispatch(request, response);
14
- } catch(ex) {
15
- console.log(ex)
16
- response.writeHead(500);
17
- response.end(ex.name + ': ' + ex.message);
18
- }
13
+ global.__RWR_ENV__ = {};
14
+ global.__RWR_VIEW_HELPERS__ = { imagePaths: {} };
15
+
16
+ fs.readFile(ASSETS_MAPPING_PATH, (err, data) => {
17
+ if (err) { return err; }
18
+ const imagePaths = data.toString('utf-8');
19
+ global.__RWR_VIEW_HELPERS__.imagePaths = JSON.parse(imagePaths);
20
+ });
21
+
22
+ const handleRequest = (req, res) => {
23
+ const { method, url } = req;
24
+ const reqStartTime = (new Date()).toLocaleTimeString();
25
+
26
+ console.log(`${method} "${url}" - ${reqStartTime}`);
27
+ dispatcher.dispatch(req, res);
19
28
  }
20
29
 
21
- dispatcher.onPost("/run", function(request, response) {
30
+ dispatcher.onPost('/run', (req, res) => {
22
31
  try {
23
- const data = JSON.parse(request.body);
24
- const result = IM.runNodeIntegration(data);
25
- response.writeHead(200, {'Content-Type': 'text/plain'});
26
- response.end(result);
27
- } catch(ex) {
28
- console.log(ex)
29
- response.writeHead(500);
30
- response.end("nodeRun failed:\n" + ex.name + ': ' + ex.message);
31
- }
32
- });
32
+ const data = JSON.parse(req.body);
33
+ const result = integrationsManager.runNodeIntegration(data);
33
34
 
34
- const server = http.createServer(handleRequest);
35
+ res.writeHead(200, { 'Content-Type': 'text/plain' });
36
+ res.end(result);
37
+ } catch(e) {
38
+ console.error(e);
35
39
 
36
- server.listen(PORT, function(){
37
- console.log("Server listening on: http://localhost:%s", PORT);
40
+ res.writeHead(500);
41
+ res.end(`nodeRun failed:\n ${e.name}: ${e.message}`);
42
+ }
38
43
  });
44
+
45
+ http
46
+ .createServer(handleRequest)
47
+ .listen(PORT, () => {
48
+ console.log(`Server listening on: http://localhost:${PORT}`)
49
+ });
@@ -1,3 +1,3 @@
1
1
  module ReactWebpackRails
2
- VERSION = '0.5.0'
2
+ VERSION = '0.6.0'
3
3
  end
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-webpack-rails",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Js part of react_webpack_rails - webpack based React & Rails integration.",
5
5
  "main": "js/lib/index.js",
6
6
  "files": [
@@ -27,14 +27,10 @@
27
27
  "url": "https://github.com/netguru/react_webpack_rails/issues"
28
28
  },
29
29
  "homepage": "https://github.com/netguru/react_webpack_rails#readme",
30
- "peerDependencies": {
31
- "react": "^15.0.0",
32
- "react-dom": "^15.0.0"
33
- },
34
30
  "dependencies": {
35
31
  "babel-polyfill": "^6.3.0",
36
- "react": "^15.0.1",
37
- "react-dom": "^15.0.1"
32
+ "react": "^15.0.0",
33
+ "react-dom": "^15.0.0"
38
34
  },
39
35
  "devDependencies": {
40
36
  "babel-cli": "^6.10.0",
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.5.0
4
+ version: 0.6.0
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: 2016-07-21 00:00:00.000000000 Z
12
+ date: 2016-08-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -111,6 +111,7 @@ files:
111
111
  - lib/generators/react_webpack_rails/install/karma_setup_generator.rb
112
112
  - lib/generators/react_webpack_rails/install/redux_generator.rb
113
113
  - lib/generators/react_webpack_rails/install/server_side_generator.rb
114
+ - lib/generators/react_webpack_rails/install/view_helpers_generator.rb
114
115
  - lib/generators/react_webpack_rails/install_generator.rb
115
116
  - lib/generators/react_webpack_rails/merge_helpers.rb
116
117
  - lib/generators/react_webpack_rails/package_merge.rb
@@ -126,6 +127,7 @@ files:
126
127
  - lib/generators/react_webpack_rails/templates/packages/js-specs.json
127
128
  - lib/generators/react_webpack_rails/templates/packages/redux.json
128
129
  - lib/generators/react_webpack_rails/templates/packages/server-side.json
130
+ - lib/generators/react_webpack_rails/templates/packages/view-helpers.json
129
131
  - lib/generators/react_webpack_rails/templates/partial/_react_hot_assets.html.erb
130
132
  - lib/generators/react_webpack_rails/templates/react/components/hello-world-test.jsx
131
133
  - lib/generators/react_webpack_rails/templates/react/components/hello-world.jsx