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 +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
|