complate 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 +7 -0
- data/.editorconfig +24 -0
- data/.gitignore +9 -0
- data/.travis.yml +5 -0
- data/Gemfile +3 -0
- data/README.md +21 -0
- data/Rakefile +10 -0
- data/complate.gemspec +26 -0
- data/lib/complate.rb +4 -0
- data/lib/complate/rails/engine.rb +21 -0
- data/lib/complate/renderer.rb +55 -0
- data/lib/complate/version.rb +3 -0
- metadata +112 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 91475d4fce902235406761a1bf0a89f8ae285cd3
|
4
|
+
data.tar.gz: 0c78bf23143e4741d14cb12e8686e226ee84ca34
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 2df709e5fad3b86d1920657c6f111cc0b4029a20079e1956dd5a272f1e54c372843e6c0465343284fa641279d9979916fdba7992071a272e336b2a977358b52c
|
7
|
+
data.tar.gz: 8501b01779ae8e3a50d54ba5ac30950f3c9be7ce602ab22a9b76824c26606464b32e2767264d3aa58d85890e3e89d5e66a5b1b9e1e0d2a3b56219d05c709f8c3
|
data/.editorconfig
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# http://editorconfig.org
|
2
|
+
|
3
|
+
root = true
|
4
|
+
|
5
|
+
[*]
|
6
|
+
charset = utf-8
|
7
|
+
end_of_line = lf
|
8
|
+
insert_final_newline = true
|
9
|
+
trim_trailing_whitespace = true
|
10
|
+
max_line_length = 80
|
11
|
+
indent_style = tab
|
12
|
+
indent_size = 4
|
13
|
+
|
14
|
+
[*.rb]
|
15
|
+
indent_style = space
|
16
|
+
indent_size = 2
|
17
|
+
|
18
|
+
[*.md]
|
19
|
+
indent_style = space
|
20
|
+
|
21
|
+
[COMMIT_EDITMSG]
|
22
|
+
trim_trailing_whitespace = false
|
23
|
+
max_line_length = 72
|
24
|
+
indent_style = space
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
# complate for Ruby
|
2
|
+
|
3
|
+
## Rails
|
4
|
+
|
5
|
+
First, add complate to your Gemfile:
|
6
|
+
|
7
|
+
```
|
8
|
+
gem "complate"
|
9
|
+
```
|
10
|
+
|
11
|
+
Add this to your `ApplicationController`:
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
include Complate::Rails::ActionControllerExtensions
|
15
|
+
```
|
16
|
+
|
17
|
+
To render something in your actions:
|
18
|
+
|
19
|
+
```ruby
|
20
|
+
complate(signature, to, be, determined)
|
21
|
+
```
|
data/Rakefile
ADDED
data/complate.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'complate/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "complate"
|
8
|
+
spec.version = Complate::VERSION
|
9
|
+
spec.authors = ["Till Schulte-Coerne", "Lucas Dohmen"]
|
10
|
+
spec.email = ["till.schulte-coerne@innoq.com",
|
11
|
+
"lucas.dohmen@innoq.com"]
|
12
|
+
|
13
|
+
spec.summary = %q{Complate JSX on the server magic for ruby}
|
14
|
+
spec.description = %q{just do it}
|
15
|
+
spec.homepage = ""
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
18
|
+
f.match(%r{^(test|spec|features)/})
|
19
|
+
end
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
|
22
|
+
spec.add_dependency "therubyracer"
|
23
|
+
spec.add_development_dependency "bundler", "~> 1.14"
|
24
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
25
|
+
spec.add_development_dependency "minitest", "~> 5.0"
|
26
|
+
end
|
data/lib/complate.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
module Complate
|
2
|
+
module Rails
|
3
|
+
|
4
|
+
class Engine < ::Rails::Engine
|
5
|
+
end
|
6
|
+
|
7
|
+
module ActionControllerExtensions
|
8
|
+
|
9
|
+
extend ActiveSupport::Concern
|
10
|
+
|
11
|
+
def complate(*args)
|
12
|
+
headers['X-Accel-Buffering'] = 'no' # Stop NGINX from buffering
|
13
|
+
headers['Cache-Control'] = 'no-cache' # Stop downstream caching
|
14
|
+
headers.delete('Content-Length') # See one line above
|
15
|
+
|
16
|
+
renderer = Complate::Renderer.new('dist/bundle.js')
|
17
|
+
self.response_body = renderer.render(*args)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'therubyracer'
|
2
|
+
|
3
|
+
require 'complate/version'
|
4
|
+
|
5
|
+
module Complate
|
6
|
+
class Renderer
|
7
|
+
def initialize(*context_files)
|
8
|
+
@cxt = V8::Context.new
|
9
|
+
@cxt['console'] = Console.new
|
10
|
+
context_files.each do |file|
|
11
|
+
@cxt.load(file)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def render(*args)
|
16
|
+
Stream.new do |stream|
|
17
|
+
@cxt.scope.render(stream, *args)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class Console
|
23
|
+
def log(*msg)
|
24
|
+
puts msg
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
class Stream < Enumerator
|
29
|
+
def initialize(&block)
|
30
|
+
@after_start = block
|
31
|
+
@buf = ''
|
32
|
+
end
|
33
|
+
|
34
|
+
def writeln(str)
|
35
|
+
write("#{str}\n")
|
36
|
+
end
|
37
|
+
|
38
|
+
def write(str)
|
39
|
+
@buf << str
|
40
|
+
end
|
41
|
+
|
42
|
+
def each(&block)
|
43
|
+
@block = block
|
44
|
+
@after_start.call(self)
|
45
|
+
flush
|
46
|
+
end
|
47
|
+
|
48
|
+
def flush(*_)
|
49
|
+
if @block && @buf != ''
|
50
|
+
@block.call(@buf)
|
51
|
+
@buf = ''
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
metadata
ADDED
@@ -0,0 +1,112 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: complate
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Till Schulte-Coerne
|
8
|
+
- Lucas Dohmen
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2017-10-20 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: therubyracer
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
requirements:
|
18
|
+
- - ">="
|
19
|
+
- !ruby/object:Gem::Version
|
20
|
+
version: '0'
|
21
|
+
type: :runtime
|
22
|
+
prerelease: false
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
requirements:
|
25
|
+
- - ">="
|
26
|
+
- !ruby/object:Gem::Version
|
27
|
+
version: '0'
|
28
|
+
- !ruby/object:Gem::Dependency
|
29
|
+
name: bundler
|
30
|
+
requirement: !ruby/object:Gem::Requirement
|
31
|
+
requirements:
|
32
|
+
- - "~>"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '1.14'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '1.14'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: rake
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '10.0'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - "~>"
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '10.0'
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: minitest
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '5.0'
|
63
|
+
type: :development
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '5.0'
|
70
|
+
description: just do it
|
71
|
+
email:
|
72
|
+
- till.schulte-coerne@innoq.com
|
73
|
+
- lucas.dohmen@innoq.com
|
74
|
+
executables: []
|
75
|
+
extensions: []
|
76
|
+
extra_rdoc_files: []
|
77
|
+
files:
|
78
|
+
- ".editorconfig"
|
79
|
+
- ".gitignore"
|
80
|
+
- ".travis.yml"
|
81
|
+
- Gemfile
|
82
|
+
- README.md
|
83
|
+
- Rakefile
|
84
|
+
- complate.gemspec
|
85
|
+
- lib/complate.rb
|
86
|
+
- lib/complate/rails/engine.rb
|
87
|
+
- lib/complate/renderer.rb
|
88
|
+
- lib/complate/version.rb
|
89
|
+
homepage: ''
|
90
|
+
licenses: []
|
91
|
+
metadata: {}
|
92
|
+
post_install_message:
|
93
|
+
rdoc_options: []
|
94
|
+
require_paths:
|
95
|
+
- lib
|
96
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - ">="
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '0'
|
106
|
+
requirements: []
|
107
|
+
rubyforge_project:
|
108
|
+
rubygems_version: 2.6.11
|
109
|
+
signing_key:
|
110
|
+
specification_version: 4
|
111
|
+
summary: Complate JSX on the server magic for ruby
|
112
|
+
test_files: []
|