vueport 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 147bdb73bbbd594daa855c6c32461e5b6a3b4a88
4
- data.tar.gz: a84bd46db6183701c34b159fdbece981b6150f60
3
+ metadata.gz: 16a3444fd6052cc9aa01af0bb7739a74d95b2104
4
+ data.tar.gz: d986a56d8e43ab8f744900d36b8726178fd811a1
5
5
  SHA512:
6
- metadata.gz: 72e0085bd54a0eb721244dbbbea89f589334015f6f20a8ec96b2283b35dc3039e0f586944d4b3cf5fb521a613ee5c066f292a2e4079ff51b19cb4f347df5b130
7
- data.tar.gz: 4942208142a73c3458686df5e5e19b6bca3574bdf96f8cd5998fc36e65f10e1020c9e859d106d1249cffe67136df95a9d2ff89976c6d434bfc448445b79b80a3
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 `rails vueport: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.
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('/render', (req, res) => {
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
- webpack(clientConfig, function (err, stats) {
28
- spinner.stop()
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
- webpack(serverConfig, function (err, stats) {
40
- spinner.stop()
41
- if (err) throw err
42
- process.stdout.write(stats.toString(statsConfig) + '\n')
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
@@ -1,5 +1,3 @@
1
- require 'httparty'
2
-
3
1
  require 'vueport/helper'
4
2
  require 'vueport/renderer'
5
3
  require 'vueport/node_client'
@@ -2,7 +2,7 @@ module Vueport
2
2
  module Helper
3
3
  def vueport(content = nil, &block)
4
4
  content = capture(&block) if block_given?
5
- Vueport::Renderer.new(content).render
5
+ Vueport::Renderer.new(content, path: request.path).render
6
6
  end
7
7
  end
8
8
  end
@@ -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
- raise(RenderError.new, response.body) if response.code != 200
20
- response.body
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 ||= HTTParty.post("http://#{server_uri}/render", post_params)
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 server_uri
37
- "#{Vueport.config[:server_host]}:#{Vueport.config[:server_port]}"
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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Vueport
2
- VERSION = '0.1.1'.freeze
2
+ VERSION = '0.1.2'.freeze
3
3
  end
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.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: 2016-12-31 00:00:00.000000000 Z
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: rails
98
+ name: webmock
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: 3.2.0
104
- type: :runtime
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.2.0
110
+ version: 2.3.1
111
111
  - !ruby/object:Gem::Dependency
112
- name: webpack-rails
112
+ name: rails
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - "~>"
115
+ - - ">="
116
116
  - !ruby/object:Gem::Version
117
- version: 0.9.9
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: 0.9.9
124
+ version: 3.2.0
125
125
  - !ruby/object:Gem::Dependency
126
- name: httparty
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.14.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.14.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: