From 118865e02882b3b76390b34c82dfa1eed8737eed Mon Sep 17 00:00:00 2001 From: "R. Tyler Croy" Date: Sat, 25 Jul 2015 14:27:42 -0700 Subject: [PATCH] Add ruby interop --- build.gradle | 6 +++++- rubyinterop.js | 2 ++ rubyinterop.rb | 19 +++++++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 rubyinterop.js create mode 100644 rubyinterop.rb diff --git a/build.gradle b/build.gradle index 0798de2..64babab 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ buildscript { apply plugin: 'com.github.jruby-gradle.base' import com.github.jrubygradle.JRubyExec -defaultTasks 'runServer' +defaultTasks 'runInterop' /* Disabling the default repositories so we can ues the new (unreleased) * default rubygems proxy @@ -42,6 +42,10 @@ task runDemo(type: JRubyExec) { script './demo.rb' } +task runInterop(type: JRubyExec) { + script './rubyinterop.rb' +} + task runServer(type: JRubyExec) { script './server.rb' systemProperties 'java.library.path' : "${buildDir}/native" diff --git a/rubyinterop.js b/rubyinterop.js new file mode 100644 index 0000000..92be7d1 --- /dev/null +++ b/rubyinterop.js @@ -0,0 +1,2 @@ +print(example); +print(example.callMethod('hello')); diff --git a/rubyinterop.rb b/rubyinterop.rb new file mode 100644 index 0000000..67010b0 --- /dev/null +++ b/rubyinterop.rb @@ -0,0 +1,19 @@ +#!/usr/bin/env ruby + +require 'java' +java_import 'javax.script.ScriptEngineManager' +java_import 'javax.script.ScriptContext' + +class Example + def hello + return 'hello world from Ruby' + end +end + +engine = ScriptEngineManager.new.get_engine_by_name('nashorn') +engine.get_bindings(ScriptContext::ENGINE_SCOPE).put('example', Example.new) + + +puts '-' * 30 +engine.eval(File.open('rubyinterop.js').read) +puts '-' * 30