execjs-rails 0.2.0 → 0.2.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/lib/execjs/rails.rb +1 -0
- data/lib/execjs/rails/engine.rb +16 -0
- data/lib/execjs/rails/renderer.rb +11 -3
- data/lib/execjs/rails/runtime_support.rb +32 -0
- data/lib/execjs/rails/version.rb +1 -1
- data/lib/execjs/rails/view_helper.rb +5 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d4fb0466c220cc5c0bef04fcac4e682253cc6416
|
4
|
+
data.tar.gz: 0d4a84f8a5a1261447498ac767041b7574232507
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bcd030d36fff24f40570e6b72f839a5fea1f351e14f377687d67b14e5267c4530e701064621595ad74c3f452ee27a849b5d470880e34917b53a6a87caaed95e3
|
7
|
+
data.tar.gz: c22f72115e27d4f701fa45adc018c9b8646af1f3c0dcaebbf38a426d012c22d84a1eeed9f6883e18c746d5f31ec7bb9996545a6f74b6bb1413e8e084b440098d
|
data/lib/execjs/rails.rb
CHANGED
data/lib/execjs/rails/engine.rb
CHANGED
@@ -18,6 +18,22 @@ module ExecJS
|
|
18
18
|
}).merge!(options.stringify_keys).to_json
|
19
19
|
end
|
20
20
|
|
21
|
+
config.execjs_rails.debug_dump_prefix = <<-JS
|
22
|
+
/*
|
23
|
+
* Unwrap this if node-inspector attempts to put it in an extra module
|
24
|
+
* Note: other things that are wrapped in module should work the same.
|
25
|
+
* This only addresses the automatic wrapping of the global scope in an
|
26
|
+
* additional module by node-inspector.
|
27
|
+
*/
|
28
|
+
if (typeof module != 'undefined') {
|
29
|
+
module = undefined;
|
30
|
+
if (typeof exports != 'undefined') {
|
31
|
+
exports = undefined;
|
32
|
+
}
|
33
|
+
arguments.callee.bind(global)(exports, require, module, __filename, __dirname)
|
34
|
+
}
|
35
|
+
JS
|
36
|
+
|
21
37
|
initializer "execjs_rails.setup_view_helpers" do
|
22
38
|
ActiveSupport.on_load(:action_view) do
|
23
39
|
include ViewHelper
|
@@ -7,7 +7,6 @@ module ExecJS
|
|
7
7
|
|
8
8
|
def self.setup!(config = {})
|
9
9
|
@@config = config
|
10
|
-
self.reset!
|
11
10
|
end
|
12
11
|
|
13
12
|
def self.config
|
@@ -18,18 +17,19 @@ module ExecJS
|
|
18
17
|
unless @@config.memoize_context? && !@@context.nil?
|
19
18
|
begin
|
20
19
|
@@context = ExecJS.compile(@@config.build_source.call())
|
21
|
-
rescue
|
20
|
+
rescue ExecJS::Rails::RuntimeSupport.error_class => error
|
22
21
|
@@config.on_error.call(error)
|
23
22
|
end
|
24
23
|
end
|
25
24
|
end
|
26
25
|
|
27
26
|
def self.call(function, *args)
|
27
|
+
self.reset! unless @@context
|
28
28
|
@@context.call(function, *args)
|
29
29
|
end
|
30
30
|
|
31
31
|
def self.has_view(path)
|
32
|
-
|
32
|
+
self.call(@@config.has_view_function_name, path)
|
33
33
|
end
|
34
34
|
|
35
35
|
def self.render(path, opts = {})
|
@@ -38,6 +38,14 @@ module ExecJS
|
|
38
38
|
output.html_safe
|
39
39
|
end
|
40
40
|
|
41
|
+
def self.dump_render_context(path, assigns, options={})
|
42
|
+
source = @@config.debug_dump_prefix + @@config.build_source.call() + "; #{ @@config.handler_function_name }('#{ path }', '#{ options }');"
|
43
|
+
file = File.open(assigns['__execjs_rails_dump_file'], 'w')
|
44
|
+
file.write(source)
|
45
|
+
file.close()
|
46
|
+
puts "Wrote render context dump to #{ file.path }. If you have node-inspector installed, you can debug it with: "
|
47
|
+
puts "node-debug #{ file.path }"
|
48
|
+
end
|
41
49
|
end
|
42
50
|
end
|
43
51
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'execjs'
|
2
|
+
|
3
|
+
# Utilities which we use to handle differences between various execjs runtimes
|
4
|
+
module ExecJS::Rails::RuntimeSupport
|
5
|
+
# This should never actually be thrown, it is just a way to keep our rescue
|
6
|
+
# blocks valid when there is no runtime configured. This way, rather than
|
7
|
+
# getting a mysterious 'class or module required for rescue clause' error,
|
8
|
+
# we get the good 'Could not find a JavaScript runtime.' error.
|
9
|
+
class DisabledError < ::StandardError; end
|
10
|
+
|
11
|
+
def self.using_runtime(klass)
|
12
|
+
ExecJS::Runtimes.autodetect.class == klass
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.using_v8
|
16
|
+
using_runtime(ExecJS::RubyRacerRuntime)
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.using_rhino
|
20
|
+
using_runtime(ExecJS::RubyRhinoRuntime)
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.error_class
|
24
|
+
if using_v8
|
25
|
+
V8::Error
|
26
|
+
elsif using_rhino
|
27
|
+
Rhino::JSError
|
28
|
+
else
|
29
|
+
DisabledError
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/execjs/rails/version.rb
CHANGED
@@ -7,9 +7,12 @@ module ExecJS
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def execjs_render(path, opts = {})
|
10
|
-
|
10
|
+
view_opts = Renderer.config.view_to_function_options.call(self, opts)
|
11
|
+
if self.assigns.has_key?('__execjs_rails_dump_file')
|
12
|
+
Renderer.dump_render_context(path, self.assigns, view_opts)
|
13
|
+
end
|
14
|
+
Renderer.render(path, view_opts)
|
11
15
|
end
|
12
|
-
|
13
16
|
end
|
14
17
|
end
|
15
18
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: execjs-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Revelry Labs, LLC
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: execjs
|
@@ -49,6 +49,7 @@ files:
|
|
49
49
|
- lib/execjs/rails/concern.rb
|
50
50
|
- lib/execjs/rails/engine.rb
|
51
51
|
- lib/execjs/rails/renderer.rb
|
52
|
+
- lib/execjs/rails/runtime_support.rb
|
52
53
|
- lib/execjs/rails/template_resolver.rb
|
53
54
|
- lib/execjs/rails/version.rb
|
54
55
|
- lib/execjs/rails/view_helper.rb
|