railman 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/railman/version.rb +1 -1
- data/railman.gemspec +0 -2
- data/templates/rails_app/.babelrc +5 -0
- data/templates/rails_app/.gitignore +8 -2
- data/templates/rails_app/.postcssrc.yml +4 -0
- data/templates/rails_app/Gemfile +15 -13
- data/templates/rails_app/Rakefile +1 -1
- data/templates/rails_app/app/assets/javascripts/application.js +1 -1
- data/templates/rails_app/app/assets/stylesheets/application.sass +1 -1
- data/templates/rails_app/app/assets/stylesheets/main.sass +7 -2
- data/templates/rails_app/app/javascript/packs/app.vue +22 -0
- data/templates/rails_app/app/javascript/packs/application.js +2 -9
- data/templates/rails_app/app/javascript/packs/hello_vue.js +19 -0
- data/templates/rails_app/bin/rails +0 -5
- data/templates/rails_app/bin/rake +0 -5
- data/templates/rails_app/bin/webpack +25 -11
- data/templates/rails_app/bin/webpack-dev-server +22 -16
- data/templates/rails_app/bin/yarn +3 -2
- data/templates/rails_app/config.ru +1 -1
- data/templates/rails_app/config/application.rb.tt +3 -0
- data/templates/rails_app/config/database.yml.tt +2 -2
- data/templates/rails_app/config/environments/development.rb +0 -3
- data/templates/rails_app/config/environments/production.rb.tt +0 -3
- data/templates/rails_app/config/{puma.rb → puma.rb.tt} +5 -6
- data/templates/rails_app/config/webpack/configuration.js +26 -0
- data/templates/rails_app/config/webpack/development.js +3 -17
- data/templates/rails_app/config/webpack/development.server.js +17 -0
- data/templates/rails_app/config/webpack/development.server.yml +17 -0
- data/templates/rails_app/config/webpack/loaders/assets.js +12 -0
- data/templates/rails_app/config/webpack/loaders/babel.js +5 -0
- data/templates/rails_app/config/webpack/loaders/coffee.js +4 -0
- data/templates/rails_app/config/webpack/loaders/erb.js +9 -0
- data/templates/rails_app/config/webpack/loaders/sass.js +14 -0
- data/templates/rails_app/config/webpack/loaders/vue.js +12 -0
- data/templates/rails_app/config/webpack/paths.yml +33 -0
- data/templates/rails_app/config/webpack/production.js +5 -7
- data/templates/rails_app/config/webpack/shared.js +28 -54
- data/templates/rails_app/config/webpack/test.js +6 -0
- data/templates/rails_app/package.json.tt +24 -17
- data/templates/rails_app/public/404.html +51 -51
- data/templates/rails_app/public/422.html +51 -51
- data/templates/rails_app/public/500.html +50 -50
- data/templates/rails_app/test/application_system_test_case.rb +5 -2
- data/templates/rails_app/test/fixtures/files/.keep +0 -0
- metadata +20 -37
- data/templates/rails_app/app/javascript/packs/hello.vue +0 -11
- data/templates/rails_app/bin/spring +0 -17
- data/templates/rails_app/bin/webpack-watcher +0 -10
- data/templates/rails_app/config/initializers/new_framework_defaults.rb +0 -25
- data/templates/rails_app/config/spring.rb +0 -6
@@ -1,30 +1,16 @@
|
|
1
|
-
// Note: You must restart bin/webpack-
|
1
|
+
// Note: You must restart bin/webpack-dev-server for changes to take effect
|
2
2
|
|
3
|
-
const webpack = require('webpack')
|
4
3
|
const merge = require('webpack-merge')
|
5
|
-
|
6
4
|
const sharedConfig = require('./shared.js')
|
7
5
|
|
8
|
-
module.exports = merge(sharedConfig
|
6
|
+
module.exports = merge(sharedConfig, {
|
9
7
|
devtool: 'sourcemap',
|
10
8
|
|
11
9
|
stats: {
|
12
10
|
errorDetails: true
|
13
11
|
},
|
14
12
|
|
15
|
-
devServer: {
|
16
|
-
stats: {
|
17
|
-
warnings: false
|
18
|
-
}
|
19
|
-
},
|
20
|
-
|
21
13
|
output: {
|
22
14
|
pathinfo: true
|
23
|
-
}
|
24
|
-
|
25
|
-
plugins: [
|
26
|
-
new webpack.LoaderOptionsPlugin({
|
27
|
-
debug: true
|
28
|
-
})
|
29
|
-
]
|
15
|
+
}
|
30
16
|
})
|
@@ -0,0 +1,17 @@
|
|
1
|
+
// Note: You must restart bin/webpack-dev-server for changes to take effect
|
2
|
+
|
3
|
+
const { resolve } = require('path')
|
4
|
+
const merge = require('webpack-merge')
|
5
|
+
const devConfig = require('./development.js')
|
6
|
+
const { devServer, publicPath, paths } = require('./configuration.js')
|
7
|
+
|
8
|
+
module.exports = merge(devConfig, {
|
9
|
+
devServer: {
|
10
|
+
host: devServer.host,
|
11
|
+
port: devServer.port,
|
12
|
+
compress: true,
|
13
|
+
historyApiFallback: true,
|
14
|
+
contentBase: resolve(paths.output, paths.entry),
|
15
|
+
publicPath
|
16
|
+
}
|
17
|
+
})
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# Note: You must restart bin/webpack-dev-server for changes to take effect
|
2
|
+
|
3
|
+
default: &default
|
4
|
+
enabled: true
|
5
|
+
host: localhost
|
6
|
+
port: 8080
|
7
|
+
|
8
|
+
development:
|
9
|
+
<<: *default
|
10
|
+
|
11
|
+
test:
|
12
|
+
<<: *default
|
13
|
+
enabled: false
|
14
|
+
|
15
|
+
production:
|
16
|
+
<<: *default
|
17
|
+
enabled: false
|
@@ -0,0 +1,12 @@
|
|
1
|
+
const { env, publicPath } = require('../configuration.js')
|
2
|
+
|
3
|
+
module.exports = {
|
4
|
+
test: /\.(jpg|jpeg|png|gif|svg|eot|ttf|woff|woff2)$/i,
|
5
|
+
use: [{
|
6
|
+
loader: 'file-loader',
|
7
|
+
options: {
|
8
|
+
publicPath,
|
9
|
+
name: env.NODE_ENV === 'production' ? '[name]-[hash].[ext]' : '[name].[ext]'
|
10
|
+
}
|
11
|
+
}]
|
12
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
const ExtractTextPlugin = require('extract-text-webpack-plugin')
|
2
|
+
const { env } = require('../configuration.js')
|
3
|
+
|
4
|
+
module.exports = {
|
5
|
+
test: /\.(scss|sass|css)$/i,
|
6
|
+
use: ExtractTextPlugin.extract({
|
7
|
+
fallback: 'style-loader',
|
8
|
+
use: [
|
9
|
+
{ loader: 'css-loader', options: { minimize: env.NODE_ENV === 'production' } },
|
10
|
+
'postcss-loader',
|
11
|
+
'sass-loader'
|
12
|
+
]
|
13
|
+
})
|
14
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module.exports = {
|
2
|
+
test: /.vue$/,
|
3
|
+
loader: 'vue-loader',
|
4
|
+
options: {
|
5
|
+
loaders: {
|
6
|
+
js: 'babel-loader',
|
7
|
+
file: 'file-loader',
|
8
|
+
scss: 'vue-style-loader!css-loader!postcss-loader!sass-loader',
|
9
|
+
sass: 'vue-style-loader!css-loader!postcss-loader!sass-loader?indentedSyntax'
|
10
|
+
}
|
11
|
+
}
|
12
|
+
}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# Note: You must restart bin/webpack-dev-server for changes to take effect
|
2
|
+
|
3
|
+
default: &default
|
4
|
+
config: config/webpack
|
5
|
+
entry: packs
|
6
|
+
output: public
|
7
|
+
manifest: manifest.json
|
8
|
+
node_modules: node_modules
|
9
|
+
source: app/javascript
|
10
|
+
extensions:
|
11
|
+
- .coffee
|
12
|
+
- .js
|
13
|
+
- .jsx
|
14
|
+
- .ts
|
15
|
+
- .vue
|
16
|
+
- .sass
|
17
|
+
- .scss
|
18
|
+
- .css
|
19
|
+
- .png
|
20
|
+
- .svg
|
21
|
+
- .gif
|
22
|
+
- .jpeg
|
23
|
+
- .jpg
|
24
|
+
|
25
|
+
development:
|
26
|
+
<<: *default
|
27
|
+
|
28
|
+
test:
|
29
|
+
<<: *default
|
30
|
+
manifest: manifest-test.json
|
31
|
+
|
32
|
+
production:
|
33
|
+
<<: *default
|
@@ -1,23 +1,21 @@
|
|
1
|
-
// Note: You must restart bin/webpack-
|
1
|
+
// Note: You must restart bin/webpack-dev-server for changes to take effect
|
2
|
+
|
3
|
+
/* eslint global-require: 0 */
|
2
4
|
|
3
5
|
const webpack = require('webpack')
|
4
6
|
const merge = require('webpack-merge')
|
5
7
|
const CompressionPlugin = require('compression-webpack-plugin')
|
6
|
-
|
7
8
|
const sharedConfig = require('./shared.js')
|
8
9
|
|
9
|
-
module.exports = merge(sharedConfig
|
10
|
+
module.exports = merge(sharedConfig, {
|
10
11
|
output: { filename: '[name]-[chunkhash].js' },
|
11
12
|
|
12
13
|
plugins: [
|
13
|
-
new webpack.LoaderOptionsPlugin({
|
14
|
-
minimize: true
|
15
|
-
}),
|
16
14
|
new webpack.optimize.UglifyJsPlugin(),
|
17
15
|
new CompressionPlugin({
|
18
16
|
asset: '[path].gz[query]',
|
19
17
|
algorithm: 'gzip',
|
20
|
-
test: /\.js$/
|
18
|
+
test: /\.(js|css|svg|eot|ttf|woff|woff2)$/
|
21
19
|
})
|
22
20
|
]
|
23
21
|
})
|
@@ -1,80 +1,54 @@
|
|
1
|
-
// Note: You must restart bin/webpack-
|
1
|
+
// Note: You must restart bin/webpack-dev-server for changes to take effect
|
2
|
+
|
3
|
+
/* eslint global-require: 0 */
|
4
|
+
/* eslint import/no-dynamic-require: 0 */
|
2
5
|
|
3
6
|
const webpack = require('webpack')
|
4
|
-
const
|
5
|
-
const
|
6
|
-
const
|
7
|
+
const { basename, dirname, join, relative, resolve } = require('path')
|
8
|
+
const { sync } = require('glob')
|
9
|
+
const ExtractTextPlugin = require('extract-text-webpack-plugin')
|
10
|
+
const ManifestPlugin = require('webpack-manifest-plugin')
|
7
11
|
const extname = require('path-complete-extname')
|
12
|
+
const { env, paths, publicPath, loadersDir } = require('./configuration.js')
|
8
13
|
|
9
|
-
|
10
|
-
|
11
|
-
if (distDir === undefined) {
|
12
|
-
distDir = 'packs'
|
13
|
-
}
|
14
|
+
const extensionGlob = `**/*{${paths.extensions.join(',')}}*`
|
15
|
+
const packPaths = sync(join(paths.source, paths.entry, extensionGlob))
|
14
16
|
|
15
|
-
|
16
|
-
entry:
|
17
|
+
module.exports = {
|
18
|
+
entry: packPaths.reduce(
|
17
19
|
(map, entry) => {
|
18
|
-
const basename = path.basename(entry, extname(entry))
|
19
20
|
const localMap = map
|
20
|
-
|
21
|
+
const namespace = relative(join(paths.source, paths.entry), dirname(entry))
|
22
|
+
localMap[join(namespace, basename(entry, extname(entry)))] = resolve(entry)
|
21
23
|
return localMap
|
22
24
|
}, {}
|
23
25
|
),
|
24
26
|
|
25
|
-
output: {
|
27
|
+
output: {
|
28
|
+
filename: '[name].js',
|
29
|
+
path: resolve(paths.output, paths.entry),
|
30
|
+
publicPath
|
31
|
+
},
|
26
32
|
|
27
33
|
module: {
|
28
|
-
rules:
|
29
|
-
{
|
30
|
-
test: /.vue$/, loader: 'vue-loader',
|
31
|
-
options: {
|
32
|
-
loaders: { 'scss': 'vue-style-loader!css-loader!sass-loader', 'sass': 'vue-style-loader!css-loader!sass-loader?indentedSyntax'}
|
33
|
-
}
|
34
|
-
},
|
35
|
-
{ test: /.png$/, loader: 'url-loader?mimetype=image/png'},
|
36
|
-
{ test: /\.coffee(\.erb)?$/, loader: 'coffee-loader' },
|
37
|
-
{
|
38
|
-
test: /\.js(\.erb)?$/,
|
39
|
-
exclude: /node_modules/,
|
40
|
-
loader: 'babel-loader',
|
41
|
-
options: {
|
42
|
-
presets: [
|
43
|
-
['env', { modules: false }]
|
44
|
-
]
|
45
|
-
}
|
46
|
-
},
|
47
|
-
{
|
48
|
-
test: /\.erb$/,
|
49
|
-
enforce: 'pre',
|
50
|
-
exclude: /node_modules/,
|
51
|
-
loader: 'rails-erb-loader',
|
52
|
-
options: {
|
53
|
-
runner: 'DISABLE_SPRING=1 bin/rails runner'
|
54
|
-
}
|
55
|
-
}
|
56
|
-
]
|
34
|
+
rules: sync(join(loadersDir, '*.js')).map(loader => require(loader))
|
57
35
|
},
|
58
36
|
|
59
37
|
plugins: [
|
60
|
-
new webpack.EnvironmentPlugin(
|
38
|
+
new webpack.EnvironmentPlugin(JSON.parse(JSON.stringify(env))),
|
39
|
+
new ExtractTextPlugin(env.NODE_ENV === 'production' ? '[name]-[hash].css' : '[name].css'),
|
40
|
+
new ManifestPlugin({ fileName: paths.manifest, publicPath, writeToFileEmit: true })
|
61
41
|
],
|
62
42
|
|
63
43
|
resolve: {
|
64
|
-
|
65
|
-
extensions: ['.js', '.coffee'],
|
44
|
+
extensions: paths.extensions,
|
66
45
|
modules: [
|
67
|
-
|
68
|
-
|
46
|
+
resolve(paths.source),
|
47
|
+
resolve(paths.node_modules)
|
69
48
|
]
|
70
49
|
},
|
71
50
|
|
72
51
|
resolveLoader: {
|
73
|
-
modules: [
|
52
|
+
modules: [paths.node_modules]
|
74
53
|
}
|
75
54
|
}
|
76
|
-
|
77
|
-
module.exports = {
|
78
|
-
distDir,
|
79
|
-
config
|
80
|
-
}
|
@@ -2,27 +2,34 @@
|
|
2
2
|
"name": "<%= @config.app_name %>",
|
3
3
|
"private": true,
|
4
4
|
"dependencies": {
|
5
|
-
"
|
6
|
-
"babel-core": "^6.
|
7
|
-
"babel-loader": "
|
8
|
-
"babel-preset-env": "^1.
|
5
|
+
"autoprefixer": "^7.0.1",
|
6
|
+
"babel-core": "^6.24.1",
|
7
|
+
"babel-loader": "7.x",
|
8
|
+
"babel-preset-env": "^1.4.0",
|
9
9
|
"coffee-loader": "^0.7.3",
|
10
|
-
"coffee-script": "^1.12.
|
11
|
-
"compression-webpack-plugin": "^0.
|
12
|
-
"css-loader": "^0.
|
10
|
+
"coffee-script": "^1.12.5",
|
11
|
+
"compression-webpack-plugin": "^0.4.0",
|
12
|
+
"css-loader": "^0.28.1",
|
13
|
+
"extract-text-webpack-plugin": "^2.1.0",
|
14
|
+
"file-loader": "^0.11.1",
|
13
15
|
"glob": "^7.1.1",
|
14
|
-
"
|
16
|
+
"js-yaml": "^3.8.4",
|
17
|
+
"node-sass": "^4.5.2",
|
15
18
|
"path-complete-extname": "^0.1.0",
|
16
|
-
"
|
17
|
-
"
|
18
|
-
"
|
19
|
-
"
|
20
|
-
"
|
21
|
-
"
|
22
|
-
"
|
23
|
-
"
|
19
|
+
"postcss-loader": "^2.0.3",
|
20
|
+
"postcss-smart-import": "^0.6.13",
|
21
|
+
"precss": "^1.4.0",
|
22
|
+
"rails-erb-loader": "^5.0.0",
|
23
|
+
"sass-loader": "^6.0.4",
|
24
|
+
"style-loader": "^0.17.0",
|
25
|
+
"vue": "^2.3.3",
|
26
|
+
"vue-loader": "^12.0.3",
|
27
|
+
"vue-template-compiler": "^2.3.3",
|
28
|
+
"webpack": "^2.5.1",
|
29
|
+
"webpack-manifest-plugin": "^1.1.0",
|
30
|
+
"webpack-merge": "^4.1.0"
|
24
31
|
},
|
25
32
|
"devDependencies": {
|
26
|
-
"webpack-dev-server": "^2.4.
|
33
|
+
"webpack-dev-server": "^2.4.5"
|
27
34
|
}
|
28
35
|
}
|
@@ -4,64 +4,64 @@
|
|
4
4
|
<title>The page you were looking for doesn't exist (404)</title>
|
5
5
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
6
6
|
<style>
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
7
|
+
.rails-default-error-page {
|
8
|
+
background-color: #EFEFEF;
|
9
|
+
color: #2E2F30;
|
10
|
+
text-align: center;
|
11
|
+
font-family: arial, sans-serif;
|
12
|
+
margin: 0;
|
13
|
+
}
|
14
14
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
15
|
+
.rails-default-error-page div.dialog {
|
16
|
+
width: 95%;
|
17
|
+
max-width: 33em;
|
18
|
+
margin: 4em auto 0;
|
19
|
+
}
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
21
|
+
.rails-default-error-page div.dialog > div {
|
22
|
+
border: 1px solid #CCC;
|
23
|
+
border-right-color: #999;
|
24
|
+
border-left-color: #999;
|
25
|
+
border-bottom-color: #BBB;
|
26
|
+
border-top: #B00100 solid 4px;
|
27
|
+
border-top-left-radius: 9px;
|
28
|
+
border-top-right-radius: 9px;
|
29
|
+
background-color: white;
|
30
|
+
padding: 7px 12% 0;
|
31
|
+
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
32
|
+
}
|
33
33
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
34
|
+
.rails-default-error-page h1 {
|
35
|
+
font-size: 100%;
|
36
|
+
color: #730E15;
|
37
|
+
line-height: 1.5em;
|
38
|
+
}
|
39
39
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
40
|
+
.rails-default-error-page div.dialog > p {
|
41
|
+
margin: 0 0 1em;
|
42
|
+
padding: 1em;
|
43
|
+
background-color: #F7F7F7;
|
44
|
+
border: 1px solid #CCC;
|
45
|
+
border-right-color: #999;
|
46
|
+
border-left-color: #999;
|
47
|
+
border-bottom-color: #999;
|
48
|
+
border-bottom-left-radius: 4px;
|
49
|
+
border-bottom-right-radius: 4px;
|
50
|
+
border-top-color: #DADADA;
|
51
|
+
color: #666;
|
52
|
+
box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
|
53
|
+
}
|
54
54
|
</style>
|
55
55
|
</head>
|
56
56
|
|
57
|
-
<body>
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
</div>
|
64
|
-
<p>If you are the application owner check the logs for more information.</p>
|
57
|
+
<body class="rails-default-error-page">
|
58
|
+
<!-- This file lives in public/404.html -->
|
59
|
+
<div class="dialog">
|
60
|
+
<div>
|
61
|
+
<h1>The page you were looking for doesn't exist.</h1>
|
62
|
+
<p>You may have mistyped the address or the page may have moved.</p>
|
65
63
|
</div>
|
64
|
+
<p>If you are the application owner check the logs for more information.</p>
|
65
|
+
</div>
|
66
66
|
</body>
|
67
67
|
</html>
|