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.
@@ -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
@@ -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
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.3.1
5
+ before_install: gem install bundler -v 1.14.6
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
@@ -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
+ ```
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList['test/**/*_test.rb']
8
+ end
9
+
10
+ task :default => :test
@@ -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
@@ -0,0 +1,4 @@
1
+ require 'complate/version'
2
+ require 'complate/renderer'
3
+
4
+ require 'complate/rails/engine' if Kernel.const_defined?(:Rails)
@@ -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
@@ -0,0 +1,3 @@
1
+ module Complate
2
+ VERSION = '0.0.1'
3
+ 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: []