v9.10 - Ruby Scripting Support
·
30 commits
to master
since this release
Added support for executing a Ruby script from a String or file. Usage (also see relevant tests):
Script File
puts "I am located at #{__FILE__}"
z = x + yJava Code
// We will direct output lines to this List
List<String> outputLines = new ArrayList<>();
// Define where our script file is located
File rubyScriptFile = new File(testDataDirectory, "BasicRubyScript.rb").getCanonicalFile();
// Get engine setup
try (NuixEngine nuixEngine = constructNuixEngine()) {
// Define some additional variables we will pass into the script
Map<String, Object> additionalVariables = Map.of(
"x", 40,
"y", 2
);
// Execute our script file, with our additional variables, redirecting output to our List and providing
// a callback that will allow us to inspect state upon script completion.
RubyScriptRunner rubyScriptRunner = nuixEngine.runRubyScriptFileAsync(
rubyScriptFile, additionalVariables, outputLines::add, outputLines::add, (result, vars) -> {
log.info("Script Output:");
log.info(String.join("", outputLines));
assertFalse(outputLines.isEmpty());
log.info("Implicit Final Result: {}", result);
assertEquals(42L, result);
for(Map.Entry<String,Object> entry : vars.entrySet()) {
log.info("{} => {}", entry.getKey(), entry.getValue());
}
Long zValue = (Long) vars.get("z");
assertEquals(42L, zValue);
});
// Script is running asynchronous so we join it to wait for it to complete.
rubyScriptRunner.join();
}