명령을 실행하는 방법을 사용하여 다른 프로세스에서 다른 스크립트 (또는 동일한 스크립트)를 실행할 수도 있습니다.
system('myscript.rb')
또는
`myscript.rb`
이 어떤 변수가 해제되어 있는지 확인합니다 비슷해하지만, 환경 변수는 물론 동일합니다. 하지만 루비 1.9부터 재설정 할 수 있습니다. 그래서 같이 :
eval.rb :
당신이
eval()
기능에 가까운 무언가를 원하는 경우에
system('myscript.rb', :unsetenv_others => true)
, 당신은 evalExt
기능을 바로 첫 번째 매개 변수를 평가하는 것이다 eval.rb
을 만든 다음 정의 할 수 있습니다 데프 evalExt (스크립트) 시스템 ("eval.rb \"# {스크립트} \ "", : unsetenv_others이 => TRUE),536
eval(ARGV[0])
그리고 다른 스크립트 끝 JRuby를 경우
evalExt('puts "test"')
evalExt('puts "test1"')
Wikipedia에 설명 된대로 JRuby를에서 자바 코드를 호출 한 후 ScriptEngineManager
를 사용하여, 쉽게 다른 루비 엔진을 호출 할 수 있어야한다 :
require 'java'
mgr = ScriptEngineManager.new();
rbEngine = mgr.getEngineByExtension("rb");
def evalExt(script)
rbEngine.eval(script);
end
을 어쩌면 당신에게 스크립트 컨텍스트 또는 바인딩 (see this article)을 재설정해야합니다.
모두가 말했듯이, 가장 쉬운 해결책은 전역 변수가 설정되지 않았는지 확인하는 것입니다. 그런 다음 별도의 컨텍스트를 사용할 필요가 없습니다.
자고있는 JRuby jar에서 이것을 실행하면 어떻게 될까요? 나는 루비를 길로 가지지 않을 것이고, 또 다른 JRuby를 호출하는 것은 너무 느릴 것이다. – Geo
고마워요! 그것은 아름답게 작동합니다! – Geo