vueport 0.1.1 → 0.1.2
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 -1
- data/lib/generators/vueport/template/renderer/index.js +1 -1
- data/lib/generators/vueport/template/vueport/build.js +19 -17
- data/lib/generators/vueport/template/vueport/webpack.server.conf.js +1 -0
- data/lib/vueport.rb +0 -2
- data/lib/vueport/helper.rb +1 -1
- data/lib/vueport/node_client.rb +12 -17
- data/lib/vueport/renderer.rb +4 -3
- data/lib/vueport/version.rb +1 -1
- data/vueport.gemspec +1 -1
- metadata +16 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 16a3444fd6052cc9aa01af0bb7739a74d95b2104
|
4
|
+
data.tar.gz: d986a56d8e43ab8f744900d36b8726178fd811a1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: addcc7f14a09fe9f1aa54f5066cc70cdc3e963c2ee33eab1d696674a1c2ea9c6f2de328575a786e7a9914a293b8a728a927e6b64179499623c78035db53a6512
|
7
|
+
data.tar.gz: f0d91aad6d3f4d59a8a25a058f5528544f8914ee019b01125d8d0144463ad91e51ba1c063b9b32015425ffa592409f781c7d0e3d37bd4faa57c07cb52b69636c
|
data/README.md
CHANGED
@@ -47,7 +47,7 @@ to boot the Webpack Dev server and your Rails app!
|
|
47
47
|
|
48
48
|
## Production Deployment
|
49
49
|
|
50
|
-
Ensure to run `
|
50
|
+
Ensure to run `npm run compile` (or `yarn run compile`) as part of your deployment process to production. This compiles the production version of your client side bundle, as well as compiling the server side bundle for our Node JS app to use.
|
51
51
|
|
52
52
|
In production we send HTTP requests to a basic NodeJS server to render our content. To run the Rails app and the Node server concurrently, use `Procfile`.
|
53
53
|
|
@@ -21,7 +21,7 @@ const render = html => new Promise((resolve, reject) => {
|
|
21
21
|
})
|
22
22
|
})
|
23
23
|
|
24
|
-
app.post('
|
24
|
+
app.post('*', (req, res) => {
|
25
25
|
if (typeof req.body !== 'string' || req.body.length === 0) return res.status(400).send('')
|
26
26
|
return render(req.body)
|
27
27
|
.catch((err) => {
|
@@ -9,9 +9,6 @@ var webpack = require('webpack')
|
|
9
9
|
var clientConfig = require('./webpack.prod.conf')
|
10
10
|
var serverConfig = require('./webpack.server.conf')
|
11
11
|
|
12
|
-
var spinner = ora('building client bundle for production...')
|
13
|
-
spinner.start()
|
14
|
-
|
15
12
|
var assetsPath = path.join(config.build.assetsRoot)
|
16
13
|
rm('-rf', assetsPath)
|
17
14
|
mkdir('-p', assetsPath)
|
@@ -24,21 +21,26 @@ var statsConfig = {
|
|
24
21
|
chunkModules: false
|
25
22
|
}
|
26
23
|
|
27
|
-
|
28
|
-
spinner
|
29
|
-
if (err) throw err
|
30
|
-
process.stdout.write(stats.toString(statsConfig) + '\n')
|
31
|
-
|
32
|
-
server()
|
33
|
-
})
|
34
|
-
|
35
|
-
var server = function () {
|
36
|
-
var spinner = ora('building server bundle for production...')
|
24
|
+
const compile = (config, bundle) => {
|
25
|
+
const spinner = ora(`Building ${bundle} for production...`)
|
37
26
|
spinner.start()
|
38
27
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
28
|
+
return new Promise(function (resolve, reject) {
|
29
|
+
webpack(config, function (err, stats) {
|
30
|
+
if (err) {
|
31
|
+
spinner.text = `Error building ${bundle}.`
|
32
|
+
spinner.fail()
|
33
|
+
return reject(err)
|
34
|
+
}
|
35
|
+
|
36
|
+
spinner.text = `Built ${bundle} successfully`
|
37
|
+
spinner.succeed()
|
38
|
+
process.stdout.write(stats.toString(statsConfig) + '\n')
|
39
|
+
resolve()
|
40
|
+
})
|
43
41
|
})
|
44
42
|
}
|
43
|
+
|
44
|
+
compile(clientConfig, 'client bundle').then(() => {
|
45
|
+
compile(serverConfig, 'server bundle')
|
46
|
+
})
|
@@ -5,6 +5,7 @@ var merge = require('webpack-merge')
|
|
5
5
|
var baseWebpackConfig = require('./webpack.base.conf')
|
6
6
|
|
7
7
|
baseWebpackConfig.plugins = []
|
8
|
+
delete baseWebpackConfig.resolve.alias['vue$']
|
8
9
|
var webpackConfig = merge(baseWebpackConfig, {
|
9
10
|
entry: './webpack/server.js',
|
10
11
|
module: {
|
data/lib/vueport.rb
CHANGED
data/lib/vueport/helper.rb
CHANGED
data/lib/vueport/node_client.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
|
2
1
|
module Vueport
|
3
2
|
class RenderError < StandardError; end
|
4
3
|
|
5
4
|
class NodeClient
|
6
|
-
attr_accessor :content
|
5
|
+
attr_accessor :content, :path
|
7
6
|
|
8
|
-
def initialize(content)
|
7
|
+
def initialize(content, path: '/')
|
9
8
|
self.content = content
|
9
|
+
self.path = path
|
10
10
|
end
|
11
11
|
|
12
12
|
def run!
|
@@ -16,25 +16,20 @@ module Vueport
|
|
16
16
|
private
|
17
17
|
|
18
18
|
def render
|
19
|
-
|
20
|
-
|
19
|
+
case response
|
20
|
+
when Net::HTTPSuccess
|
21
|
+
response.body
|
22
|
+
else
|
23
|
+
raise(RenderError.new, response.body)
|
24
|
+
end
|
21
25
|
end
|
22
26
|
|
23
27
|
def response
|
24
|
-
@response ||=
|
25
|
-
end
|
26
|
-
|
27
|
-
def post_params
|
28
|
-
{
|
29
|
-
body: content,
|
30
|
-
headers: {
|
31
|
-
'Content-Type': 'text/plain'
|
32
|
-
}
|
33
|
-
}
|
28
|
+
@response ||= http.post path, content, 'Content-Type' => 'text/plain'
|
34
29
|
end
|
35
30
|
|
36
|
-
def
|
37
|
-
|
31
|
+
def http
|
32
|
+
@http ||= Net::HTTP.new Vueport.config[:server_host], Vueport.config[:server_port]
|
38
33
|
end
|
39
34
|
end
|
40
35
|
end
|
data/lib/vueport/renderer.rb
CHANGED
@@ -5,10 +5,11 @@ module Vueport
|
|
5
5
|
CONTENT_WRAPPER_ID = 'vueport-wrapper'.freeze
|
6
6
|
TEMPLATE_ID = 'vueport-template'.freeze
|
7
7
|
|
8
|
-
attr_accessor :content
|
8
|
+
attr_accessor :content, :path
|
9
9
|
|
10
|
-
def initialize(content)
|
10
|
+
def initialize(content, path: '/')
|
11
11
|
self.content = content
|
12
|
+
self.path = path
|
12
13
|
end
|
13
14
|
|
14
15
|
def render
|
@@ -26,7 +27,7 @@ module Vueport
|
|
26
27
|
end
|
27
28
|
|
28
29
|
def ssr_content
|
29
|
-
Vueport::NodeClient.new(wrapper(content)).run!
|
30
|
+
Vueport::NodeClient.new(wrapper(content), path: path).run!
|
30
31
|
rescue Vueport::RenderError
|
31
32
|
wrapper
|
32
33
|
end
|
data/lib/vueport/version.rb
CHANGED
data/vueport.gemspec
CHANGED
@@ -25,10 +25,10 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_development_dependency 'rubocop', '~> 0.45.0'
|
26
26
|
spec.add_development_dependency 'rspec-html-matchers', '~> 0.8.1'
|
27
27
|
spec.add_development_dependency 'ammeter', '~> 1.1.4'
|
28
|
+
spec.add_development_dependency 'webmock', '~> 2.3.1'
|
28
29
|
|
29
30
|
spec.add_dependency 'rails', '>= 3.2.0'
|
30
31
|
spec.add_dependency 'webpack-rails', '~> 0.9.9'
|
31
|
-
spec.add_dependency 'httparty', '~> 0.14.0'
|
32
32
|
|
33
33
|
spec.required_ruby_version = '>= 2.0.0'
|
34
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vueport
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Garson
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -95,47 +95,47 @@ dependencies:
|
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 1.1.4
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
98
|
+
name: webmock
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 3.
|
104
|
-
type: :
|
103
|
+
version: 2.3.1
|
104
|
+
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version: 3.
|
110
|
+
version: 2.3.1
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
112
|
+
name: rails
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - "
|
115
|
+
- - ">="
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
117
|
+
version: 3.2.0
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - "
|
122
|
+
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version:
|
124
|
+
version: 3.2.0
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
126
|
+
name: webpack-rails
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
129
|
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
|
-
version: 0.
|
131
|
+
version: 0.9.9
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
|
-
version: 0.
|
138
|
+
version: 0.9.9
|
139
139
|
description: Use webpack and Vue js to get modern front end technology in your Rails
|
140
140
|
app, including hotloading and single file components.
|
141
141
|
email:
|