react-rails-generator 0.0.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 941a06d0e019b126a140b56acd80cf372ede74c4
4
+ data.tar.gz: a3b8cbfe43445c6d28f397b8b3da3af09c8292c4
5
+ SHA512:
6
+ metadata.gz: 28621f6ea2d0b2648240f767ee30c84eac5b9640ce60a56993b40a80b7491c41fe84f5a7f4565745c8d8847b1b36d8e23587da3a4fabd2c65e70dc8bc3da6f07
7
+ data.tar.gz: d0604cb66a913092a4ad9d335b63a20b74a40524c8d16c211b989ae25a15253f133e590328f1d3ba2c4d6265ec2774e58b6edab9634e3e6f82d54e8c4a6ddc2e
checksums.yaml.gz.sig ADDED
Binary file
data/bin/react-rails ADDED
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "generators/init_react"
4
+
5
+ system("rails new #{ARGV[0]}")
6
+ InitReact.new(ARGV[0]).init
7
+ Dir.chdir ARGV[0]
@@ -0,0 +1,174 @@
1
+ require "fileutils"
2
+
3
+ class InitReact
4
+ def initialize app_name
5
+ @app_name = app_name
6
+ FileUtils::mkdir_p "#{@app_name}/app/jsx"
7
+ end
8
+
9
+ def init
10
+ create_babelrc
11
+ add_gitignore
12
+ create_app_jsx
13
+ create_bootstrap_jsx
14
+ add_react_wrapper
15
+ create_package_json
16
+ create_webpack_config
17
+ end
18
+
19
+ def create_babelrc
20
+ babelrc = <<-HEREDOC
21
+ {
22
+ presets: [
23
+ "es2017",
24
+ "react",
25
+ ],
26
+ "plugins": [
27
+ "transform-class-properties",
28
+ ],
29
+ }
30
+ HEREDOC
31
+
32
+ File.open("#{@app_name}/out.txt", "w") do |f|
33
+ f.write(babelrc)
34
+ end
35
+ end
36
+
37
+ def add_gitignore
38
+ gitignore = <<-HEREDOC
39
+ node_modules
40
+ app/assets/javascripts/react-app.js
41
+ HEREDOC
42
+
43
+ File.open("#{@app_name}/.gitignore", "a+") do |f|
44
+ f.write(gitignore)
45
+ end
46
+ end
47
+
48
+ def create_app_jsx
49
+ app_jsx = <<-HEREDOC
50
+ import getMuiTheme from "material-ui/styles/getMuiTheme";
51
+ import MuiThemeProvider from "material-ui/styles/MuiThemeProvider";
52
+
53
+ export default class App extends React.Component {
54
+ render() {
55
+ return (
56
+ <MuiThemeProvider muiTheme={getMuiTheme()}>
57
+ <mui.Drawer open={true}>
58
+ <mui.MenuItem>FAQ</mui.MenuItem>
59
+ </mui.Drawer>
60
+ </MuiThemeProvider>
61
+ );
62
+ }
63
+ }
64
+ HEREDOC
65
+
66
+ File.open("#{@app_name}/app/jsx/app.jsx", "w") do |f|
67
+ f.write(app_jsx)
68
+ end
69
+ end
70
+
71
+ def create_bootstrap_jsx
72
+ bootstrap_jsx = <<-HEREDOC
73
+ import ReactDOM from "react-dom";
74
+ import {Router, Route, Link, browserHistory} from "react-router"
75
+
76
+ import injectTapEventPlugin from "react-tap-event-plugin";
77
+ injectTapEventPlugin();
78
+
79
+ import App from "./app";
80
+
81
+ const router = (
82
+ <Router history={browserHistory}>
83
+ <Route path="/" component={App}>
84
+ </Route>
85
+ </Router>
86
+ );
87
+
88
+ $(document).on("ready page:load", function() {
89
+ ReactDOM.render(router, document.getElementById("react-wrapper"));
90
+ });
91
+ HEREDOC
92
+
93
+ File.open("#{@app_name}/app/jsx/bootstrap.jsx", "w") do |f|
94
+ f.write(bootstrap_jsx)
95
+ end
96
+ end
97
+
98
+ def add_react_wrapper
99
+ file_name = "#{@app_name}/app/views/layouts/application.html.erb"
100
+ text = File.read(file_name)
101
+ new_contents = text.gsub(/<%= yield %>/, '<div id="react-wrapper"></div>')
102
+ File.open(file_name, "w") {|f| f.write(new_contents)}
103
+ end
104
+
105
+ def create_package_json
106
+ package_json = <<-HEREDOC
107
+ {
108
+ "private": true,
109
+ "dependencies": {
110
+ "babel-core": "^6.18.2",
111
+ "babel-loader": "^6.2.7",
112
+ "babel-preset-es2017": "^1.4.0",
113
+ "babel-preset-react-hmre": "^1.1.1",
114
+ "babel-preset-react": "^6.16.0",
115
+ "material-ui": "^0.16.0",
116
+ "react": "^15.4.0",
117
+ "react-addons-update": "^15.4.0",
118
+ "react-dom": "^15.4.0",
119
+ "react-router": "^3.0.0",
120
+ "react-tap-event-plugin": "^2.0.0",
121
+ "react-toastr": "^2.8.0",
122
+ "webpack": "~1.13.3"
123
+ }
124
+ }
125
+ HEREDOC
126
+
127
+ File.open("#{@app_name}/package.json", "w") do |f|
128
+ f.write(package_json)
129
+ end
130
+ end
131
+
132
+ def create_webpack_config
133
+ webpack_config = <<-HEREDOC
134
+ var webpack = require("webpack");
135
+
136
+ const paths = {
137
+ js: "./app/assets/javascripts/",
138
+ jsx: "./app/jsx/",
139
+ }
140
+
141
+ var alias = {
142
+ "react/lib/CSSPropertyOperations": "react-dom/lib/CSSPropertyOperations"
143
+ };
144
+
145
+ module.exports = {
146
+ entry: paths.jsx + "bootstrap.jsx",
147
+ output: {
148
+ path: paths.js,
149
+ filename: "react-app.js",
150
+ },
151
+ resolve: {
152
+ extensions: ['', '.js', '.jsx'],
153
+ alias: alias,
154
+ },
155
+ module: {
156
+ loaders: [{
157
+ test: /\.jsx?$/,
158
+ loaders: ['babel?cacheDirectory'],
159
+ }]
160
+ },
161
+ plugins: [
162
+ new webpack.ProvidePlugin({
163
+ React: "react",
164
+ mui: "material-ui",
165
+ })
166
+ ],
167
+ }
168
+ HEREDOC
169
+
170
+ File.open("#{@app_name}/webpack.config.js", "w") do |f|
171
+ f.write(webpack_config)
172
+ end
173
+ end
174
+ end
data.tar.gz.sig ADDED
Binary file
metadata ADDED
@@ -0,0 +1,68 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: react-rails-generator
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Bach Van Ngoc
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDijCCAnKgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMRcwFQYDVQQDDA5uZXZl
14
+ cnNtaWxlMTJiMTEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQB
15
+ GRYDY29tMB4XDTE3MDUwODA5NDExMVoXDTE4MDUwODA5NDExMVowRTEXMBUGA1UE
16
+ AwwObmV2ZXJzbWlsZTEyYjExFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmS
17
+ JomT8ixkARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAN35
18
+ LZ1gt+cEs9rBssbC1I4v/I4ZhFzMfnyD/ArzakoxsLIzDOB+nj0+3LzZHfcjEvLa
19
+ UMvSbJ8R4v0gGlbLC70RtXbhPRVwhcyoOAABaD7NZjxROiHOwThyGBShsLteNKSG
20
+ d5QL6N9DW5iGO9dxiOHsQTRH8slR0A5QpwIOb1meK/gHs4OwpghOmCqWqSMq/zdC
21
+ RbWbbAw7NOWJZVbBgOnaH64fHlrqNPtSI1wAEA8YqRw7pxnb5gx86pKw8A6zLDQ4
22
+ bjldNHT93rscaLqencfsr6ZSYthw3+X9PAm9csfxICRBGId/tfHGS8dfC3z9Ptwz
23
+ vstpoE+injXvGp83PKkCAwEAAaOBhDCBgTAJBgNVHRMEAjAAMAsGA1UdDwQEAwIE
24
+ sDAdBgNVHQ4EFgQU6K4tApQ9Y4Xawrmwc9gShYFBnrUwIwYDVR0RBBwwGoEYbmV2
25
+ ZXJzbWlsZTEyYjFAZ21haWwuY29tMCMGA1UdEgQcMBqBGG5ldmVyc21pbGUxMmIx
26
+ QGdtYWlsLmNvbTANBgkqhkiG9w0BAQUFAAOCAQEAu4V9Vt8Wg6ByPmZVHvIevWe1
27
+ vZrhURsaoZOl4DIy/HoJQAGlOZnKoA2i1Ch/q5L2Bw6YV9Rw9CaB+J8I87jVZQ/3
28
+ +wRffI943LIxjzkDbE+xyMj1WxMD0vya8jKy9Ntu/vIgE3Pi7ePoVLcn4s7V4dlu
29
+ ZrFAQ9dcP3KgKqlyBhpTa1FvR2w8NIRuP4dsdNR9FWs9V/732aFG2neoAcioNhNA
30
+ Wt1AQEk+MTC+t/byXCIxnQE3kop57JRYDdd1pck4MmLvVpixD3mhOA8QNXZR6P/3
31
+ VWRkILiW3rvPHLFTy/AMn5XKxpUm3lV1f13P57/YZ+c+wJOB2wpI/kgYjhy/Pg==
32
+ -----END CERTIFICATE-----
33
+ date: 2017-05-17 00:00:00.000000000 Z
34
+ dependencies: []
35
+ description: A simple React Rails generator
36
+ email: nevesmile12b1@gmail.com
37
+ executables:
38
+ - react-rails
39
+ extensions: []
40
+ extra_rdoc_files: []
41
+ files:
42
+ - bin/react-rails
43
+ - lib/generators/init_react.rb
44
+ homepage: http://rubygems.org/gems/hello-neversmile
45
+ licenses:
46
+ - MIT
47
+ metadata: {}
48
+ post_install_message:
49
+ rdoc_options: []
50
+ require_paths:
51
+ - lib
52
+ required_ruby_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: '0'
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ requirements: []
63
+ rubyforge_project:
64
+ rubygems_version: 2.6.12
65
+ signing_key:
66
+ specification_version: 4
67
+ summary: React Rails generator
68
+ test_files: []
metadata.gz.sig ADDED
Binary file