mini_racer/README.md

93 lines
2.1 KiB
Markdown
Raw Normal View History

2016-05-04 06:54:51 +00:00
# MiniRacer
2016-05-10 08:30:37 +00:00
Minimal, modern embedded V8 for Ruby.
MiniRacer provides a minimal complete bridge to the V8 JavaScript engine from Ruby.
It was created as an alternative to the excellent [therubyracer](https://github.com/cowboyd/therubyracer). Unlike therubyracer, mini_racer only implements a minimal (yet complete) bridge. This reduces the surface area making upgrading v8 much simpler and exahustive testing simpler.
## Features
### Simple eval for JavaScript
You can simply eval one or many JavaScript snippets in a shared context
```ruby
context = MiniRacer::Context.new
context.eval 'var adder = (a,b)=>a+b;'
puts context.eval 'adder(20,22)'
# => 42
```
2016-05-10 08:37:55 +00:00
### Attach global Ruby functions to your JavaScript context
2016-05-10 08:30:37 +00:00
You can attach one or many ruby proc that can be accessed via JavaScript
```ruby
context = MiniRacer::Context.new
context.attach("adder", proc{|a,b| a+b})
puts context.eval 'adder(20,22)'
# => 42
```
### GIL free JavaScript execution
The Ruby Global interpreter lock is released when scripts are executing
```ruby
context = MiniRacer::Context.new
Thread.new do
sleep 1
context.stop
end
context.eval 'while(true){}'
# => exception is raised
```
This allows you to execute multiple scripts in parallel.
### Timeout support
Contexts can specify a default timeout for scripts
```ruby
# times out after 1 second (1000 ms)
context = MiniRacer::Context.new(timeout: 1000)
context.eval 'while(true){}'
# => exception is raised
```
2016-05-04 06:54:51 +00:00
## Installation
2016-05-10 08:30:37 +00:00
**Currently gem is in alpha development and can not be installed until libv8 is released**
2016-05-04 06:54:51 +00:00
Add this line to your application's Gemfile:
```ruby
gem 'mini_racer'
```
And then execute:
$ bundle
Or install it yourself as:
$ gem install mini_racer
## Usage
## Development
## Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/mini_racer. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
## License
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).