therubyracer 0.11.0beta8-x86-freebsd-9
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/.gitignore +23 -0
- data/.travis.yml +10 -0
- data/Changelog.md +242 -0
- data/Gemfile +16 -0
- data/README.md +185 -0
- data/Rakefile +42 -0
- data/benchmarks.rb +218 -0
- data/ext/v8/accessor.cc +181 -0
- data/ext/v8/array.cc +26 -0
- data/ext/v8/backref.cc +45 -0
- data/ext/v8/build.rb +52 -0
- data/ext/v8/constants.cc +34 -0
- data/ext/v8/constraints.cc +52 -0
- data/ext/v8/context.cc +130 -0
- data/ext/v8/date.cc +18 -0
- data/ext/v8/exception.cc +38 -0
- data/ext/v8/extconf.rb +25 -0
- data/ext/v8/external.cc +43 -0
- data/ext/v8/function.cc +58 -0
- data/ext/v8/gc.cc +43 -0
- data/ext/v8/handles.cc +34 -0
- data/ext/v8/heap.cc +31 -0
- data/ext/v8/init.cc +39 -0
- data/ext/v8/init.so +0 -0
- data/ext/v8/invocation.cc +86 -0
- data/ext/v8/locker.cc +77 -0
- data/ext/v8/message.cc +51 -0
- data/ext/v8/object.cc +334 -0
- data/ext/v8/primitive.cc +8 -0
- data/ext/v8/rr.cc +83 -0
- data/ext/v8/rr.h +932 -0
- data/ext/v8/script.cc +80 -0
- data/ext/v8/signature.cc +18 -0
- data/ext/v8/stack.cc +76 -0
- data/ext/v8/string.cc +47 -0
- data/ext/v8/template.cc +175 -0
- data/ext/v8/trycatch.cc +87 -0
- data/ext/v8/v8.cc +87 -0
- data/ext/v8/value.cc +239 -0
- data/lib/v8.rb +30 -0
- data/lib/v8/access.rb +5 -0
- data/lib/v8/access/indices.rb +40 -0
- data/lib/v8/access/invocation.rb +47 -0
- data/lib/v8/access/names.rb +65 -0
- data/lib/v8/array.rb +26 -0
- data/lib/v8/context.rb +245 -0
- data/lib/v8/conversion.rb +36 -0
- data/lib/v8/conversion/array.rb +11 -0
- data/lib/v8/conversion/class.rb +119 -0
- data/lib/v8/conversion/code.rb +38 -0
- data/lib/v8/conversion/fixnum.rb +11 -0
- data/lib/v8/conversion/fundamental.rb +11 -0
- data/lib/v8/conversion/hash.rb +11 -0
- data/lib/v8/conversion/indentity.rb +31 -0
- data/lib/v8/conversion/method.rb +26 -0
- data/lib/v8/conversion/object.rb +28 -0
- data/lib/v8/conversion/primitive.rb +7 -0
- data/lib/v8/conversion/proc.rb +5 -0
- data/lib/v8/conversion/reference.rb +16 -0
- data/lib/v8/conversion/string.rb +12 -0
- data/lib/v8/conversion/symbol.rb +7 -0
- data/lib/v8/conversion/time.rb +13 -0
- data/lib/v8/error.rb +166 -0
- data/lib/v8/function.rb +28 -0
- data/lib/v8/object.rb +79 -0
- data/lib/v8/stack.rb +85 -0
- data/lib/v8/version.rb +3 -0
- data/lib/v8/weak.rb +70 -0
- data/spec/c/array_spec.rb +17 -0
- data/spec/c/constants_spec.rb +20 -0
- data/spec/c/exception_spec.rb +26 -0
- data/spec/c/external_spec.rb +9 -0
- data/spec/c/function_spec.rb +46 -0
- data/spec/c/handles_spec.rb +35 -0
- data/spec/c/locker_spec.rb +38 -0
- data/spec/c/object_spec.rb +46 -0
- data/spec/c/script_spec.rb +28 -0
- data/spec/c/string_spec.rb +16 -0
- data/spec/c/template_spec.rb +30 -0
- data/spec/c/trycatch_spec.rb +51 -0
- data/spec/mem/blunt_spec.rb +42 -0
- data/spec/redjs_spec.rb +10 -0
- data/spec/spec_helper.rb +45 -0
- data/spec/threading_spec.rb +52 -0
- data/spec/v8/context_spec.rb +19 -0
- data/spec/v8/conversion_spec.rb +52 -0
- data/spec/v8/error_spec.rb +165 -0
- data/spec/v8/function_spec.rb +9 -0
- data/spec/v8/object_spec.rb +15 -0
- data/thefrontside.png +0 -0
- data/therubyracer.gemspec +20 -0
- metadata +164 -0
data/.gitignore
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
*.gem
|
2
|
+
*.rbc
|
3
|
+
.rbx/
|
4
|
+
.rvmrc
|
5
|
+
.bundle
|
6
|
+
.config
|
7
|
+
.yardoc
|
8
|
+
.project
|
9
|
+
.cproject
|
10
|
+
Gemfile.lock
|
11
|
+
InstalledFiles
|
12
|
+
_yardoc
|
13
|
+
coverage
|
14
|
+
doc/
|
15
|
+
lib/bundler/man
|
16
|
+
lib/v8/*.bundle
|
17
|
+
lib/v8/*.so
|
18
|
+
pkg
|
19
|
+
rdoc
|
20
|
+
spec/reports
|
21
|
+
test/tmp
|
22
|
+
test/version_tmp
|
23
|
+
tmp
|
data/.travis.yml
ADDED
data/Changelog.md
ADDED
@@ -0,0 +1,242 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
## 0.11
|
4
|
+
|
5
|
+
* upgrade V8 version to 3.11.8
|
6
|
+
* remove dependency on libv8. enable compilation against system v8
|
7
|
+
* complete re-write of low-level C layer for dramatically increased stability and performance
|
8
|
+
* more faithful and complete coverage of the low-level C API
|
9
|
+
* ease the building of binary gems
|
10
|
+
* official support for Rubinius
|
11
|
+
* ability to query V8 for memory usage and set resource constraints
|
12
|
+
* extensible conversion framework for thunking Ruby values to V8 and vice-versa
|
13
|
+
* extensible invocation framework for calling Ruby code (Proc, Method, etc...) from JavaScript
|
14
|
+
* extensible access framework for interacting with Ruby properties from JavaScript
|
15
|
+
* provide explicit context teardown for distributed cycles of garbage.
|
16
|
+
|
17
|
+
|
18
|
+
## 0.10.1 2012/04/05
|
19
|
+
|
20
|
+
* [bugfix] V8::Object#respond_to? did not call super
|
21
|
+
|
22
|
+
## 0.10.0 2012/03/28
|
23
|
+
|
24
|
+
* [incompatible] embedded lambdas now take JS `this` object as first object
|
25
|
+
* add sponsorship image to the README
|
26
|
+
* enable Travis CI
|
27
|
+
|
28
|
+
## 0.9.9 2011/11/08
|
29
|
+
|
30
|
+
* remove GCC specific C++ extension to fix llvm build.
|
31
|
+
|
32
|
+
## 0.9.8 2011/11/07
|
33
|
+
|
34
|
+
* let Rake version float again.
|
35
|
+
|
36
|
+
## 0.9.7 2011/10/06
|
37
|
+
* build fixes
|
38
|
+
* fix rake dependency at 0.8.7 while the Rake team sorts some shit out.
|
39
|
+
|
40
|
+
## 0.9.6 2011/10/06
|
41
|
+
|
42
|
+
* make build compatible with Gentoo
|
43
|
+
|
44
|
+
## 0.9.5 - 2011/10/05
|
45
|
+
|
46
|
+
* remove GCC specific code to enable build on BSD
|
47
|
+
* let Rake dependency float
|
48
|
+
|
49
|
+
## 0.9.4 - 2011/08/22
|
50
|
+
|
51
|
+
* Fix an issue with the compilation include paths which allowed compilation against conflicting libv8's
|
52
|
+
|
53
|
+
## 0.9.3 - 2011/08/11
|
54
|
+
|
55
|
+
* Better documentation for the C extension memory management
|
56
|
+
* Always lock V8 operations, always.
|
57
|
+
* GH-86 Context#[], Context#[]= always looks up values from the JavaScript scope, even when it's a Ruby object
|
58
|
+
|
59
|
+
## 0.9.2 - 2011/06/23
|
60
|
+
|
61
|
+
* fix issue with 1.8.7 where object allocation inside of GC was segfaulting
|
62
|
+
|
63
|
+
## 0.9.1 - 2011/06/17
|
64
|
+
|
65
|
+
* never perform V8 operations inside Ruby GC
|
66
|
+
* refactor locking interface
|
67
|
+
* add documentation for v8_handle
|
68
|
+
|
69
|
+
## 0.9.0 - 2011/06/10
|
70
|
+
|
71
|
+
* extract libv8 into installable binary for most platforms
|
72
|
+
* fix numerous memory leaks
|
73
|
+
* expose the V8 debugger via V8::C::Debug::EnableAgent()
|
74
|
+
* force UTf-8 encoding on strings returned from javascript in ruby 1.9
|
75
|
+
* remove deprecated evaluate() methods
|
76
|
+
* make the currently executing JavaScript stack available via Context#stack
|
77
|
+
|
78
|
+
## 0.8.1 - 2011/03/07
|
79
|
+
|
80
|
+
* upgrade to v8 3.1.8
|
81
|
+
* remove bin/v8 which conflicted with v8 executeable
|
82
|
+
* decruft all the crap that had accumulated in the gem
|
83
|
+
* Javascript Objects are now always mapped to the same V8::Object when read from the context
|
84
|
+
|
85
|
+
## 0.8.0 - 2010/12/02
|
86
|
+
|
87
|
+
* every V8 Context gets its own unique access strategy
|
88
|
+
* ruby methods and procs embedded in javascript always return the same function per context.
|
89
|
+
* ruby classes and subclasses are now all connected via the javascript prototype chain
|
90
|
+
* better error reporting on syntax errors
|
91
|
+
* upgrade to rspec 2
|
92
|
+
* several bug fixes and stability fixes
|
93
|
+
|
94
|
+
## 0.7.5 - 2010/08/03
|
95
|
+
|
96
|
+
* upgrade to V8 2.3.3
|
97
|
+
* property interceptors from ruby via [] and []=
|
98
|
+
* indexed property access via [] and []=
|
99
|
+
* property
|
100
|
+
* several bugfixes
|
101
|
+
* stability: eliminate many segfaults
|
102
|
+
* don't enumerate property setters such as foo= from javascript
|
103
|
+
|
104
|
+
## 0.7.4 - 2010/06/15
|
105
|
+
|
106
|
+
* bug fix for rvm ruby installs incorrectly detected as 32bit
|
107
|
+
|
108
|
+
## 0.7.3 - 2010/06/15
|
109
|
+
|
110
|
+
* don't catch SystemExit and NoMemoryError
|
111
|
+
* fix bug bundling gem
|
112
|
+
|
113
|
+
## 0.7.2 - 2010/06/14
|
114
|
+
|
115
|
+
* embed ruby classes as constructors
|
116
|
+
* support for rubinius
|
117
|
+
* uniform backtrace() function on JSError mixes the ruby
|
118
|
+
* String::NewSymbol() is now scriptable
|
119
|
+
* InstanceTemplate(), PrototypeTemplate(), Inherit() methods on v8::FunctionTemplate now scriptable.
|
120
|
+
* reuse the standard ruby object access template
|
121
|
+
* fix a bunch of compile warnings
|
122
|
+
* Store any ruby object in V8 with V8::C::External
|
123
|
+
|
124
|
+
## 0.7.1 - 2010/06/03
|
125
|
+
|
126
|
+
* Function#call() now uses the global scope for 'this' by default
|
127
|
+
* Function#methodcall() added to allow passing in 'this' object
|
128
|
+
* Function#new() method to invoke javascript constructor from ruby
|
129
|
+
* access javascript properties and call javascript methods from ruby
|
130
|
+
* bundled Jasmine DOM-Less browser testing framework.
|
131
|
+
|
132
|
+
* added Object::GetHiddenValue() to v8 metal
|
133
|
+
* added Handle::IsEmpty() to v8 metal
|
134
|
+
* fixed bug where iterating over arrays sometimes failed
|
135
|
+
* numerous bug /segfault fixes.
|
136
|
+
|
137
|
+
## 0.7.0 - 2010/05/31
|
138
|
+
|
139
|
+
* upgraded to V8 2.1.10
|
140
|
+
* added low level scripting interface for V8 objects
|
141
|
+
* ruby object property/method access is now implemented in ruby
|
142
|
+
* auto-convert javascript arrays to rb arrays and vice-versa
|
143
|
+
* auto-convert ruby hashes into javascript objects
|
144
|
+
* auto-convert javascript Date into ruby Time object and vice versa.
|
145
|
+
* better exception handling when passing through multiple language boundaries
|
146
|
+
* objects maintain referential integrity when passing objects from ruby to javascript and vice-versa
|
147
|
+
* added debug compile option for getting C/C++ backtraces whenever segfaults occur.
|
148
|
+
* official support for REE 1.8.7
|
149
|
+
* fixed numerous segfaults
|
150
|
+
* implemented V8::Value#to_s
|
151
|
+
* the global scope is available to every V8::Context as the 'scope' attribute
|
152
|
+
* properly convert ruby boolean values into V8 booleans.
|
153
|
+
|
154
|
+
## 0.6.3 - 2010/05/07
|
155
|
+
|
156
|
+
* FIX: linkage error on OSX /usr/bin/ruby
|
157
|
+
|
158
|
+
## 0.6.2 - 2010/05/06
|
159
|
+
|
160
|
+
* FIX: linkage error on OSX 10.5
|
161
|
+
|
162
|
+
## 0.6.1 - 2010/05/03
|
163
|
+
|
164
|
+
* call JavaScript functions from Ruby
|
165
|
+
|
166
|
+
## 0.6.0 - 2010/03/31
|
167
|
+
|
168
|
+
* ruby 1.9 compatible
|
169
|
+
* full featured command line bin/v8 and bin/therubyracer
|
170
|
+
* self validating install (v8 --selftest)
|
171
|
+
* Only dependency to build gem from source is rubygems.
|
172
|
+
|
173
|
+
## 0.5.5 - 2010/03/15
|
174
|
+
|
175
|
+
* fix string encoding issue that was breaking RHEL 5.x
|
176
|
+
* fix pthread linking issue on RHEL 5.2
|
177
|
+
|
178
|
+
## 0.5.4 - 2010/03/09
|
179
|
+
|
180
|
+
* add ext directory to gem require paths which was causing problems for non-binary gems
|
181
|
+
|
182
|
+
## 0.5.3 - 2010/03/01
|
183
|
+
|
184
|
+
* added full back trace to javascript code
|
185
|
+
|
186
|
+
## 0.5.2 - 2010/02/26
|
187
|
+
|
188
|
+
* added javascript shell (bin/therubyracer)
|
189
|
+
* added to_s method for embedded ruby objects
|
190
|
+
* added line number and file name to error message.
|
191
|
+
|
192
|
+
## 0.5.1 - 2010/02/17
|
193
|
+
|
194
|
+
* fix bug in 1.8.6 by creating Object#tap if it does not exist
|
195
|
+
|
196
|
+
## 0.5.0 - 2010/02/17
|
197
|
+
|
198
|
+
* support for Linux 64 bit
|
199
|
+
|
200
|
+
## 0.4.9 - 2010/02/16
|
201
|
+
|
202
|
+
* support for Linux 32 bit
|
203
|
+
|
204
|
+
## 0.4.8 - 2010/02/08
|
205
|
+
|
206
|
+
* expose line number and source name on JavascriptErrors.
|
207
|
+
|
208
|
+
## 0.4.5 - 2010/01/18
|
209
|
+
|
210
|
+
* case munging so that ruby methods(perl_case) are accessed through javascript in camelCase.
|
211
|
+
* access 0-arity ruby methods as javascript properties
|
212
|
+
* invoke ruby setters from javascript as properties
|
213
|
+
* contexts detect whether they are open or not and open when needed
|
214
|
+
|
215
|
+
## 0.4.4 - 2010/01/14
|
216
|
+
|
217
|
+
* Ruby objects embedded into javascript are passed back to ruby as themselves and not a wrapped V8 object wrapping a ruby object.
|
218
|
+
* Use any ruby object as the scope of eval().
|
219
|
+
* quick and dirty V8.eval() method added
|
220
|
+
* native objects have a reference to the context that created them.
|
221
|
+
* context now has equality check.
|
222
|
+
* expose InContext() and GetCurrent() methods.
|
223
|
+
* fix a couple of segmentation faults
|
224
|
+
|
225
|
+
## 0.4.3 - 2010/10/11
|
226
|
+
|
227
|
+
* access properties on Ruby objects with their camel case equivalents
|
228
|
+
* reflect JavaScript objects into Ruby and access their properties
|
229
|
+
* load JavaScript source from an IO object or by filename
|
230
|
+
|
231
|
+
## 0.4.2 - 2010/10/10
|
232
|
+
|
233
|
+
* embed Ruby Objects into Javascript and call their methods
|
234
|
+
|
235
|
+
## 0.4.1 - 2010/01/09
|
236
|
+
|
237
|
+
* embed bare Proc and Method objects into JavaScript and call them
|
238
|
+
* catch JavaScript exceptions from Ruby
|
239
|
+
|
240
|
+
## 0.4.0 - 2009/12/21
|
241
|
+
|
242
|
+
* evaluate JavaScript code from inside Ruby.
|
data/Gemfile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
source 'http://rubygems.org'
|
2
|
+
|
3
|
+
gemspec
|
4
|
+
|
5
|
+
gem 'redjs', :git => 'https://github.com/cowboyd/redjs.git'
|
6
|
+
gem "rake"
|
7
|
+
gem "rspec", "~> 2.0"
|
8
|
+
gem "rake-compiler"
|
9
|
+
gem 'gem-compiler' unless Object.const_defined?(:RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
|
10
|
+
|
11
|
+
group :libv8 do
|
12
|
+
gem 'libv8', "~> 3.11.8"
|
13
|
+
end
|
14
|
+
|
15
|
+
|
16
|
+
|
data/README.md
ADDED
@@ -0,0 +1,185 @@
|
|
1
|
+
# therubyracer
|
2
|
+
|
3
|
+
* [http://github.com/cowboyd/therubyracer](http://github.com/cowboyd/therubyracer)
|
4
|
+
* [http://groups.google.com/group/therubyracer](http://groups.google.com/group/therubyracer)
|
5
|
+
* [irc://irc.freenode.net/therubyracer](http://groups.google.com/group/therubyracer)
|
6
|
+
* [Documentation](https://github.com/cowboyd/therubyracer/wiki)
|
7
|
+
|
8
|
+
## DESCRIPTION
|
9
|
+
|
10
|
+
Embed the V8 Javascript interpreter into Ruby.
|
11
|
+
|
12
|
+
|
13
|
+
## FEATURES
|
14
|
+
|
15
|
+
* Evaluate Javascript from with in Ruby
|
16
|
+
* Embed your Ruby objects into the Javascript world
|
17
|
+
* Manipulate JavaScript objects and call JavaScript functions from Ruby
|
18
|
+
* API compatible with the The Ruby Rhino (for JRuby: http://github.com/cowboyd/therubyrhino)
|
19
|
+
|
20
|
+
## SYNOPSIS
|
21
|
+
|
22
|
+
gem install therubyracer
|
23
|
+
|
24
|
+
then in your ruby code
|
25
|
+
|
26
|
+
require 'v8'
|
27
|
+
# or if using bundler (as with Rails), add the following to your Gemfile
|
28
|
+
gem "therubyracer", :require => 'v8'
|
29
|
+
|
30
|
+
evaluate some simple javascript
|
31
|
+
|
32
|
+
cxt = V8::Context.new
|
33
|
+
cxt.eval('7 * 6') #=> 42
|
34
|
+
|
35
|
+
embed values into the scope of your context
|
36
|
+
|
37
|
+
cxt['foo'] = "bar"
|
38
|
+
cxt.eval('foo') # => "bar"
|
39
|
+
|
40
|
+
embed ruby code into your scope and call it from javascript
|
41
|
+
|
42
|
+
cxt["say"] = lambda {|this, word, times| word * times}
|
43
|
+
cxt.eval("say('Hello', 3)") #=> HelloHelloHello
|
44
|
+
|
45
|
+
embed a ruby object into your scope and access its properties/methods from javascript
|
46
|
+
|
47
|
+
class MyMath
|
48
|
+
def plus(lhs, rhs)
|
49
|
+
lhs + rhs
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
cxt['math'] = MyMath.new
|
54
|
+
cxt.eval("math.plus(20,22)") #=> 42
|
55
|
+
|
56
|
+
make a ruby object *be* your global javascript scope.
|
57
|
+
|
58
|
+
math = MyMath.new
|
59
|
+
V8::Context.new(:with => math) do |cxt|
|
60
|
+
cxt.eval("plus(20,22)") #=> 42
|
61
|
+
end
|
62
|
+
|
63
|
+
you can do the same thing with Object#eval_js
|
64
|
+
|
65
|
+
math.eval_js("plus(20,22)")
|
66
|
+
|
67
|
+
## Different ways of loading javascript source
|
68
|
+
|
69
|
+
In addition to just evaluating strings, you can also use streams such as files.
|
70
|
+
|
71
|
+
evaluate bytes read from any File/IO object:
|
72
|
+
|
73
|
+
File.open("mysource.js") do |file|
|
74
|
+
cxt.eval(file, "mysource.js")
|
75
|
+
end
|
76
|
+
|
77
|
+
or load it by filename
|
78
|
+
|
79
|
+
cxt.load("mysource.js")
|
80
|
+
|
81
|
+
|
82
|
+
## Safe by default, dangerous by demand
|
83
|
+
|
84
|
+
The Ruby Racer is designed to let you evaluate javascript as safely as possible unless you tell it to do something more
|
85
|
+
dangerous. The default context is a hermetically sealed javascript environment with only the standard javascript objects
|
86
|
+
and functions. Nothing from the ruby world is accessible at all.
|
87
|
+
|
88
|
+
For ruby objects that you explicitly embed into javascript, by default only the _public_ methods _below_ `Object` are
|
89
|
+
exposed by default. E.g.
|
90
|
+
|
91
|
+
class A
|
92
|
+
def a
|
93
|
+
"a"
|
94
|
+
end
|
95
|
+
|
96
|
+
def to_s
|
97
|
+
super
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
class B < A
|
102
|
+
def b
|
103
|
+
"b"
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
|
108
|
+
V8::Context.new do |cxt|
|
109
|
+
cxt['a'] = A.new
|
110
|
+
cxt['b'] = B.new
|
111
|
+
cxt.eval("a.a") # => 'a'
|
112
|
+
cxt.eval("b.b") # => 'b'
|
113
|
+
cxt.eval("b.a") # => 'a'
|
114
|
+
cxt.eval("b.to_s") # => #<B:0x101776be8> (because A explicitly defined it)
|
115
|
+
cxt.eval("b.object_id") #=> undefined, object_id is on Object
|
116
|
+
end
|
117
|
+
|
118
|
+
If needed, you can override the [Ruby Access](https://github.com/cowboyd/therubyracer/blob/master/lib/v8/access.rb)
|
119
|
+
to allow whatever behavior you'd like
|
120
|
+
|
121
|
+
More documentation can be found on the [github wiki](https://github.com/cowboyd/therubyracer/wiki)
|
122
|
+
|
123
|
+
## PREREQUISITES
|
124
|
+
|
125
|
+
For platforms for which there is a binary version of therubyracer gem available, there are no
|
126
|
+
dependencies other than ruby and rubygems.
|
127
|
+
|
128
|
+
If there is not a binary version for your system, then you will need to compile it from source.
|
129
|
+
To do this, you must have v8 >= 3.11.8 installed somewhere on your system. There are several
|
130
|
+
ways of doing this. For both you will need a C++ compiler.
|
131
|
+
|
132
|
+
The first method involves using a version of the v8 source which is maintained
|
133
|
+
[as a rubygem called libv8][1]. To use it, all you have to do is
|
134
|
+
add the following to your Gemfile:
|
135
|
+
|
136
|
+
gem 'libv8', '~> 3.11.8'
|
137
|
+
|
138
|
+
This will download and build v8 from source for you as part of the gem installation
|
139
|
+
process. When therubyracer is installed, it will find this gem if it is present and
|
140
|
+
link against the v8 binaries contained therein.
|
141
|
+
|
142
|
+
If you cannot, or do not wish to use the libv8 rubygem, then you can either install
|
143
|
+
libv8 with you operating system's packaging system or you can [build it from source][2].
|
144
|
+
If you build from source, be sure to set the library=shared option. Also, if you install
|
145
|
+
this shared library into a place that is not on your standard lib and include paths, then
|
146
|
+
you can pass your non-standard locations to therubyracer using the
|
147
|
+
`--with-v8-include` and `--with-v8-lib` configuration options.
|
148
|
+
|
149
|
+
|
150
|
+
## DEVELOP
|
151
|
+
git clone git://github.com/cowboyd/therubyracer.git
|
152
|
+
cd therubyracer
|
153
|
+
bundle install
|
154
|
+
rake compile
|
155
|
+
|
156
|
+
## Sponsored by
|
157
|
+
<a href="http://thefrontside.net">![The Frontside](http://github.com/cowboyd/therubyracer/raw/master/thefrontside.png)</a>
|
158
|
+
|
159
|
+
## LICENSE:
|
160
|
+
|
161
|
+
(The MIT License)
|
162
|
+
|
163
|
+
Copyright (c) 2009,2010,2011,2012 Charles Lowell
|
164
|
+
|
165
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
166
|
+
a copy of this software and associated documentation files (the
|
167
|
+
'Software'), to deal in the Software without restriction, including
|
168
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
169
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
170
|
+
permit persons to whom the Software is furnished to do so, subject to
|
171
|
+
the following conditions:
|
172
|
+
|
173
|
+
The above copyright notice and this permission notice shall be
|
174
|
+
included in all copies or substantial portions of the Software.
|
175
|
+
|
176
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
177
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
178
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
179
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
180
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
181
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
182
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
183
|
+
|
184
|
+
[1]: https://github.com/cowboyd/libv8
|
185
|
+
[2]: http://code.google.com/p/v8/wiki/BuildingWithGYP
|