Общие объекты между двумя экземплярами JRuby в одной JVM
Я хотел бы знать, возможно ли разделить объект между двумя экземплярами JRuby, если они работают внутри одной JVM?
Я уже пытался создать одноэлементный Java-класс, на который ссылаются оба JRubies, но кажется, что каждый JRuby создает свое собственное окружение и свою собственную версию этого Java-класса.
Кто-нибудь знает способ решить эту проблему?
1 ответ
Хорошо - на самом деле были две проблемы.
- Переменные для совместного использования должны начинаться с знака $ (например, $database).
- LocalContextScope контейнера сценариев должен быть установлен в правильное значение.
Если для LocalContextScope установлено значение "singleton" и "одновременный", возможно что-то вроде следующего.
require 'java'
include Java
import 'org.jruby.embed.ScriptingContainer'
import 'org.jruby.embed.LocalContextScope'
$a = "Test"
container = ScriptingContainer.new LocalContextScope::CONCURRENT
container.run_scriptlet "puts $a"