react_webpack_rails 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -0
- data/js/src/integrations/react.js +11 -1
- data/js/src/version.js +1 -1
- data/js/test/integrations/react.spec.js +26 -1
- data/lib/generators/react_webpack_rails/install/view_helpers_generator.rb +31 -0
- data/lib/generators/react_webpack_rails/install_generator.rb +20 -12
- data/lib/generators/react_webpack_rails/templates/packages/view-helpers.json +5 -0
- data/lib/generators/react_webpack_rails/templates/react/node_server.js +36 -25
- data/lib/react_webpack_rails/version.rb +1 -1
- data/package.json +3 -7
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab94298add2a819ece6deb843faba11d9854eb57
|
4
|
+
data.tar.gz: 3f287303ddad42a74f2f1940e730648a1fb22c72
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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(
|
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.
|
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('
|
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
|
32
|
-
return unless options.
|
33
|
-
|
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
|
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
|
|
@@ -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
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
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(
|
30
|
+
dispatcher.onPost('/run', (req, res) => {
|
22
31
|
try {
|
23
|
-
const data = JSON.parse(
|
24
|
-
const result =
|
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
|
-
|
35
|
+
res.writeHead(200, { 'Content-Type': 'text/plain' });
|
36
|
+
res.end(result);
|
37
|
+
} catch(e) {
|
38
|
+
console.error(e);
|
35
39
|
|
36
|
-
|
37
|
-
|
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
|
+
});
|
data/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "react-webpack-rails",
|
3
|
-
"version": "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.
|
37
|
-
"react-dom": "^15.0.
|
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.
|
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-
|
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
|