render-react 0.0.2 → 0.0.3

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: 034cfe68457045e81b4c578ca14fa5ba692c7dc0
4
- data.tar.gz: f9d63c8fa6b963ac7632a4c3f9a981647bba64f6
3
+ metadata.gz: ddd5c97adcd6ba8d8c1a2a594f5da398da5cc2d5
4
+ data.tar.gz: 53670580d70661bf44f81713ababbebe7093fb44
5
5
  SHA512:
6
- metadata.gz: b26d92e8ad3f2a5fad6e661cfbd833108ca796c53d7a2d8910dcc5bb519989ada3de6a861a98d9c1458e345b0f78e12ad8a2adb287ffaef5992e4e46969d7c28
7
- data.tar.gz: 223d10391d0462ac36791cbd1a988a3e4ae48b36a8c7aeb1021a794191e3282e00f216ed7aaa94b60cbabe417a624930fd9e8773bdf92149ae0ea351eb90a42e
6
+ metadata.gz: f48287b850dc575b70231c3bcc2b922480d0f5496d805bb4a0933f8958dd542e9a0b9237bd37ac67825abf09f5cc226581e80c4415d79b85c4e04229de0df29e
7
+ data.tar.gz: 39420f25acaf5124b3b1e6abb5b0f917c92ab81456ee108877f0c397aa6792ad0ded243eec207d132fbd8949f07475ab3123ceb35864a039b69cd517a29f094f
@@ -5,9 +5,9 @@ module Render
5
5
  @lookup ||= {}
6
6
  end
7
7
 
8
- def cxt
9
- return @cxt if @cxt
8
+ def create_context
10
9
  @cxt = Config.new_context
10
+ @durability = Config::CONTEXT_DURABILITY
11
11
 
12
12
  js_lib_files = Dir.glob(
13
13
  File.join(
@@ -17,36 +17,45 @@ module Render
17
17
  '*.js'
18
18
  )
19
19
  )
20
- js_lib_files.each { |file| @cxt.load(file) }
21
20
 
22
- @cxt
21
+ js_lib_files.each { |file| @cxt.load(file) }
23
22
  end
24
23
 
25
- def load_components
26
- return if @components_loaded
24
+ def bootstrap
25
+ if @durability && @durability <= 0
26
+ @cxt.destroy
27
+ @cxt = nil
28
+ end
29
+
30
+ create_context unless @cxt
31
+
27
32
  Config.paths.each do |path|
28
33
  files = Dir.glob(File.join(path, '**', '*.js'))
29
34
  files.each do |filename|
30
35
  name, code = Transpiler.babelify(filename)
31
- cxt.eval(code)
36
+ @cxt.eval(code)
32
37
  lookup[name.to_sym] = true
33
38
  end
34
39
  end
35
- @components_loaded = true
40
+
41
+ @durability -= 1
36
42
  end
37
43
 
38
44
  def render(component_class, **props)
39
45
  unless lookup[component_class.to_sym]
40
46
  raise "#{component_class} component not found."
41
47
  end
42
- cxt.eval <<-EOS
43
- ReactDOMServer.renderToString(
44
- React.createElement(#{component_class}, #{JSON.dump(props)})
45
- );
48
+ @cxt.eval <<-EOS
49
+ var component = React.createElement(#{component_class}, #{JSON.dump(props)});
50
+ ReactDOMServer.renderToString(component);
46
51
  EOS
47
52
  end
48
53
 
49
- module_function :load_components, :render, :cxt, :lookup
54
+ def evaljs(code)
55
+ @cxt.eval(code)
56
+ end
57
+
58
+ module_function :bootstrap, :create_context, :render, :lookup, :evaljs
50
59
  end
51
60
  end
52
61
  end
@@ -1,6 +1,8 @@
1
1
  module Render
2
2
  module React
3
3
  module Config
4
+ CONTEXT_DURABILITY = 100_000
5
+
4
6
  def path(*paths)
5
7
  @paths ||= []
6
8
  @paths += paths
@@ -11,7 +13,7 @@ module Render
11
13
  end
12
14
 
13
15
  def new_context
14
- MiniRacer::Context.new
16
+ V8::Context.new
15
17
  end
16
18
 
17
19
  def gem_js_path
@@ -1,5 +1,5 @@
1
1
  module Render
2
2
  module React
3
- VERSION = '0.0.2'.freeze
3
+ VERSION = '0.0.3'.freeze
4
4
  end
5
5
  end
data/lib/render/react.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require 'json'
2
- require 'mini_racer'
2
+ require 'v8'
3
3
  require 'active_support/inflector'
4
4
 
5
5
  require 'render/react/config'
@@ -10,7 +10,7 @@ require 'render/react/version'
10
10
  module Render
11
11
  module React
12
12
  def render_react(component_class, **props)
13
- Compiler.load_components
13
+ Compiler.bootstrap
14
14
  "<span data-react-isomorphic='true' " \
15
15
  "data-react-component='#{component_class}' " \
16
16
  "data-react-props='#{JSON.dump(props)}'>" \
data/render-react.gemspec CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |spec|
17
17
  spec.bindir = "exe"
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
 
20
- spec.add_dependency "mini_racer"
20
+ spec.add_dependency "therubyracer"
21
21
  spec.add_dependency "activesupport"
22
22
  spec.require_paths = ["lib"]
23
23
 
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: render-react
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Krasnoschekov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-08-23 00:00:00.000000000 Z
11
+ date: 2016-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: mini_racer
14
+ name: therubyracer
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="