therubyracer 0.10.0beta1 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of therubyracer might be problematic. Click here for more details.
- data/.travis.yml +9 -0
- data/README.md +8 -5
- data/ext/v8/extconf.rb +2 -2
- data/ext/v8/v8_function.cpp +5 -4
- data/lib/v8/cli.rb +19 -18
- data/lib/v8/context.rb +4 -0
- data/lib/v8/portal/proxies.rb +1 -1
- data/lib/v8/version.rb +1 -1
- data/thefrontside.png +0 -0
- data/therubyracer.gemspec +1 -1
- metadata +22 -17
data/.travis.yml
ADDED
data/README.md
CHANGED
@@ -48,7 +48,7 @@ embed a ruby object into your scope and access its properties/methods from javas
|
|
48
48
|
lhs + rhs
|
49
49
|
end
|
50
50
|
end
|
51
|
-
|
51
|
+
|
52
52
|
cxt['math'] = MyMath.new
|
53
53
|
cxt.eval("math.plus(20,22)") #=> 42
|
54
54
|
|
@@ -59,7 +59,7 @@ make a ruby object *be* your global javascript scope.
|
|
59
59
|
cxt.eval("plus(20,22)") #=> 42
|
60
60
|
end
|
61
61
|
|
62
|
-
you can do the same thing with Object#eval_js
|
62
|
+
you can do the same thing with Object#eval_js
|
63
63
|
|
64
64
|
math.eval_js("plus(20,22)")
|
65
65
|
|
@@ -96,14 +96,14 @@ exposed by default. E.g.
|
|
96
96
|
super
|
97
97
|
end
|
98
98
|
end
|
99
|
-
|
99
|
+
|
100
100
|
class B < A
|
101
101
|
def b
|
102
102
|
"b"
|
103
103
|
end
|
104
104
|
end
|
105
|
-
|
106
|
-
|
105
|
+
|
106
|
+
|
107
107
|
V8::Context.new do |cxt|
|
108
108
|
cxt['a'] = A.new
|
109
109
|
cxt['b'] = B.new
|
@@ -138,6 +138,9 @@ To use the ruby racer in rails, or any application using Bundler to manage gems,
|
|
138
138
|
bundle install
|
139
139
|
rake compile
|
140
140
|
|
141
|
+
## Sponsored by
|
142
|
+
<a href="http://thefrontside.net">![The Frontside](http://github.com/cowboyd/therubyracer/raw/master/thefrontside.png)</a>
|
143
|
+
|
141
144
|
## LICENSE:
|
142
145
|
|
143
146
|
(The MIT License)
|
data/ext/v8/extconf.rb
CHANGED
@@ -18,8 +18,8 @@ $CPPFLAGS += " -Wall" unless $CPPFLAGS.split.include? "-Wall"
|
|
18
18
|
$CPPFLAGS += " -g" unless $CPPFLAGS.split.include? "-g"
|
19
19
|
$CPPFLAGS += " -rdynamic" unless $CPPFLAGS.split.include? "-rdynamic"
|
20
20
|
|
21
|
-
$
|
22
|
-
$LIBS << ' -
|
21
|
+
$LDFLAGS.insert 0, "#{Libv8.library_path}/libv8.#{$LIBEXT} "
|
22
|
+
$LIBS << ' -lpthread'
|
23
23
|
|
24
24
|
CONFIG['LDSHARED'] = '$(CXX) -shared' unless RUBY_PLATFORM =~ /darwin/
|
25
25
|
|
data/ext/v8/v8_function.cpp
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
|
2
|
+
#include <vector>
|
2
3
|
#include "v8_function.h"
|
3
4
|
#include "v8_object.h"
|
4
5
|
#include "v8_handle.h"
|
@@ -21,11 +22,11 @@ namespace {
|
|
21
22
|
Local<Object> thisObj = rr_rb2v8(recv)->ToObject();
|
22
23
|
Handle<Array> args = rr_v8_handle<Array>(arguments);
|
23
24
|
int argc = args->Length();
|
24
|
-
Handle<Value> argv
|
25
|
+
std::vector< Handle<Value> > argv (argc);
|
25
26
|
for (int i = 0; i < argc; i++) {
|
26
27
|
argv[i] = args->Get(i);
|
27
28
|
}
|
28
|
-
return rr_v82rb(function->Call(thisObj, argc, argv));
|
29
|
+
return rr_v82rb(function->Call(thisObj, argc, &argv[0]));
|
29
30
|
}
|
30
31
|
|
31
32
|
VALUE NewInstance(VALUE self, VALUE arguments) {
|
@@ -33,11 +34,11 @@ namespace {
|
|
33
34
|
Handle<Function> function = unwrap(self);
|
34
35
|
Handle<Array> args = rr_v8_handle<Array>(arguments);
|
35
36
|
int argc = args->Length();
|
36
|
-
Handle<Value> argv
|
37
|
+
std::vector< Handle<Value> > argv (argc);
|
37
38
|
for (int i = 0; i < argc; i++) {
|
38
39
|
argv[i] = args->Get(i);
|
39
40
|
}
|
40
|
-
return rr_v82rb(function->NewInstance(argc, argv));
|
41
|
+
return rr_v82rb(function->NewInstance(argc, &argv[0]));
|
41
42
|
}
|
42
43
|
VALUE GetName(VALUE self) {
|
43
44
|
HandleScope scope;
|
data/lib/v8/cli.rb
CHANGED
@@ -3,7 +3,7 @@ require 'ostruct'
|
|
3
3
|
|
4
4
|
module V8
|
5
5
|
module CLI
|
6
|
-
def self.run(exename = 'v8', args = [])
|
6
|
+
def self.run(exename = 'v8', args = [])
|
7
7
|
options = OpenStruct.new
|
8
8
|
options.libs = []
|
9
9
|
options.libdirs = []
|
@@ -30,12 +30,12 @@ module V8
|
|
30
30
|
puts "V8 Version #{Libv8::V8_VERSION}"
|
31
31
|
exit
|
32
32
|
elsif options.selftest
|
33
|
-
self.test
|
33
|
+
self.test
|
34
34
|
end
|
35
35
|
Context.new(:with => Shell.new) do |cxt|
|
36
36
|
for libfile in options.libs do
|
37
37
|
load(cxt,libfile)
|
38
|
-
end
|
38
|
+
end
|
39
39
|
if options.interactive
|
40
40
|
repl(cxt, exename)
|
41
41
|
elsif options.execute
|
@@ -60,35 +60,36 @@ module V8
|
|
60
60
|
puts e
|
61
61
|
end
|
62
62
|
end
|
63
|
-
|
63
|
+
|
64
64
|
def self.test
|
65
65
|
begin
|
66
|
-
require 'rubygems'
|
67
66
|
require 'rspec'
|
67
|
+
specs = File.expand_path('../../../spec', __FILE__)
|
68
|
+
$:.unshift specs
|
68
69
|
ARGV.clear
|
69
|
-
ARGV <<
|
70
|
+
ARGV << specs
|
70
71
|
::RSpec::Core::Runner.autorun
|
71
72
|
exit(0)
|
72
73
|
rescue LoadError => e
|
73
74
|
puts "selftest requires rspec to be installed (gem install rspec)"
|
74
75
|
exit(1)
|
75
76
|
end
|
76
|
-
|
77
|
+
|
77
78
|
end
|
78
79
|
|
79
80
|
def self.repl(cxt, exename)
|
80
81
|
require 'readline'
|
81
82
|
puts "help() for help. quit() to quit."
|
82
83
|
puts "The Ruby Racer #{V8::VERSION}"
|
83
|
-
puts "Vroom Vroom!"
|
84
|
+
puts "Vroom Vroom!"
|
84
85
|
trap("SIGINT") do
|
85
86
|
puts "^C"
|
86
|
-
end
|
87
|
+
end
|
87
88
|
loop do
|
88
89
|
line = Readline.readline("#{exename}> ", true)
|
89
90
|
begin
|
90
91
|
result = cxt.eval(line, '<shell>')
|
91
|
-
puts(result) unless result.nil?
|
92
|
+
puts(result) unless result.nil?
|
92
93
|
rescue V8::JSError => e
|
93
94
|
puts e.message
|
94
95
|
puts e.backtrace(:javascript)
|
@@ -96,9 +97,9 @@ module V8
|
|
96
97
|
puts e
|
97
98
|
puts e.backtrace.join("\n")
|
98
99
|
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
102
103
|
class Shell
|
103
104
|
def to_s
|
104
105
|
"[object Shell]"
|
@@ -111,18 +112,18 @@ module V8
|
|
111
112
|
def exit(status = 0)
|
112
113
|
Kernel.exit(status)
|
113
114
|
end
|
114
|
-
|
115
|
+
|
115
116
|
alias_method :quit, :exit
|
116
|
-
|
117
|
+
|
117
118
|
def help(*args)
|
118
119
|
<<-HELP
|
119
120
|
print(msg)
|
120
|
-
print msg to STDOUT
|
121
|
-
|
121
|
+
print msg to STDOUT
|
122
|
+
|
122
123
|
exit(status = 0)
|
123
124
|
exit the shell
|
124
125
|
also: quit()
|
125
|
-
|
126
|
+
|
126
127
|
evalrb(source)
|
127
128
|
evaluate some ruby source
|
128
129
|
HELP
|
data/lib/v8/context.rb
CHANGED
data/lib/v8/portal/proxies.rb
CHANGED
@@ -74,7 +74,7 @@ module V8
|
|
74
74
|
if id = @rb_proxies_js2rb[object]
|
75
75
|
ObjectSpace._id2ref id
|
76
76
|
end
|
77
|
-
rescue RangeError
|
77
|
+
rescue RangeError
|
78
78
|
# sometimes, the Ruby proxy has been garbage collected, but
|
79
79
|
# the finalizer which runs has not been called. That's OK
|
80
80
|
# we just clear out the entry, and return nil so that a new
|
data/lib/v8/version.rb
CHANGED
data/thefrontside.png
ADDED
Binary file
|
data/therubyracer.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
|
24
24
|
s.add_dependency "libv8", "~> 3.3.10"
|
25
25
|
|
26
|
-
s.add_development_dependency "rake"
|
26
|
+
s.add_development_dependency "rake"
|
27
27
|
s.add_development_dependency "rspec", "~> 2.0"
|
28
28
|
s.add_development_dependency "rake-compiler"
|
29
29
|
end
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: therubyracer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.
|
5
|
-
prerelease:
|
4
|
+
version: 0.10.0
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Charles Lowell
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2012-03-28 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: libv8
|
17
|
-
requirement: &
|
17
|
+
requirement: &2152411380 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ~>
|
@@ -22,21 +22,21 @@ dependencies:
|
|
22
22
|
version: 3.3.10
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *2152411380
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: rake
|
28
|
-
requirement: &
|
28
|
+
requirement: &2152410300 !ruby/object:Gem::Requirement
|
29
29
|
none: false
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ! '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0
|
33
|
+
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
|
-
version_requirements: *
|
36
|
+
version_requirements: *2152410300
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: rspec
|
39
|
-
requirement: &
|
39
|
+
requirement: &2152402840 !ruby/object:Gem::Requirement
|
40
40
|
none: false
|
41
41
|
requirements:
|
42
42
|
- - ~>
|
@@ -44,10 +44,10 @@ dependencies:
|
|
44
44
|
version: '2.0'
|
45
45
|
type: :development
|
46
46
|
prerelease: false
|
47
|
-
version_requirements: *
|
47
|
+
version_requirements: *2152402840
|
48
48
|
- !ruby/object:Gem::Dependency
|
49
49
|
name: rake-compiler
|
50
|
-
requirement: &
|
50
|
+
requirement: &2152398280 !ruby/object:Gem::Requirement
|
51
51
|
none: false
|
52
52
|
requirements:
|
53
53
|
- - ! '>='
|
@@ -55,7 +55,7 @@ dependencies:
|
|
55
55
|
version: '0'
|
56
56
|
type: :development
|
57
57
|
prerelease: false
|
58
|
-
version_requirements: *
|
58
|
+
version_requirements: *2152398280
|
59
59
|
description: Call javascript code and manipulate javascript objects from ruby. Call
|
60
60
|
ruby code and manipulate ruby objects from javascript.
|
61
61
|
email: cowboyd@thefrontside.net
|
@@ -68,6 +68,7 @@ files:
|
|
68
68
|
- .gitignore
|
69
69
|
- .gitmodules
|
70
70
|
- .rspec
|
71
|
+
- .travis.yml
|
71
72
|
- .yardopts
|
72
73
|
- Changelog.md
|
73
74
|
- Gemfile
|
@@ -152,6 +153,7 @@ files:
|
|
152
153
|
- specmem/spec_helper.rb
|
153
154
|
- specthread/spec_helper.rb
|
154
155
|
- specthread/threading_spec.rb
|
156
|
+
- thefrontside.png
|
155
157
|
- therubyracer.gemspec
|
156
158
|
- spec/redjs/.gitignore
|
157
159
|
- spec/redjs/README.txt
|
@@ -172,16 +174,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
172
174
|
version: '0'
|
173
175
|
segments:
|
174
176
|
- 0
|
175
|
-
hash: -
|
177
|
+
hash: -3968721215230919371
|
176
178
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
177
179
|
none: false
|
178
180
|
requirements:
|
179
|
-
- - ! '
|
181
|
+
- - ! '>='
|
180
182
|
- !ruby/object:Gem::Version
|
181
|
-
version:
|
183
|
+
version: '0'
|
184
|
+
segments:
|
185
|
+
- 0
|
186
|
+
hash: -3968721215230919371
|
182
187
|
requirements: []
|
183
188
|
rubyforge_project: therubyracer
|
184
|
-
rubygems_version: 1.8.
|
189
|
+
rubygems_version: 1.8.17
|
185
190
|
signing_key:
|
186
191
|
specification_version: 3
|
187
192
|
summary: Embed the V8 Javascript interpreter into Ruby
|