Доступ к переменной fom для среды JRuby script верхнего уровня Java

jruby 1.7.23 (1.9.3p551) 2015-11-24 f496dd5 на Java-сервере HotSpot (TM) 64-разрядный сервер VM 1.7.0_79-b15 + jit [Windows 7-amd64]

Я запускаю скриптлет в контейнере для скриптов следующим образом:

(RubyObject) ro = (RubyObject)container.runScriptlet(org.jruby.embed.PathType.RELATIVE,"example.rb");

где container имеет тип ScriptingContainer. "Локальное поведение переменной" установлено на "переходный".

Файл example.rb содержит следующие строки:

foo='xxx'
$bar='yyy'
'zzz'

Я могу получить со стороны Java значение 'zzz', потому что оно явно возвращается из runScriptlet. Я также могу получить значение $bar, используя

container.get("$bar")

Есть ли способ получить значение foo? container.get("foo") возвращает нулевой указатель.

Я также попытался изменить поведение локальной переменной на "постоянный", но все тот же результат.

Ответ 1

Я думаю, что вы уже использовали этот ScriptingContainer (LocalVariableBehavior.PERSISTENT), но это означает, что вы уже имеете доступ к большей части того, что находится внутри этого скрипта.

Возможно, мы можем изменить ваш немного кода и попробуйте использовать синтаксический анализ. См. пример 4. Это может просветить вас. Надеюсь, это поможет.