金子です。

最近 Windows Script Control の存在を知りました。
なかなか面白いですね。
で arton さんの ActiveScriptRuby を使っていくつか
スクリプトを実行させてみたのですが、ruby の中から
RubyScript を再帰的に呼び出すと死にます。

こんな使い方をする人はいないとは思いますが
VBScript 版が正しく動作していてくやしいので
一応、報告しておきます。


環境は
ActiveScriptRuby 1.6.6.1
Win98SE + Windows Script Control 1.00 -- アプリケーションエラー
Win2k pro                             -- 結果が表示されない
です。

以下のスクリプトの vbs版(その1)は正しく動作します。
ruby版(その2)が死にます。

[その1: script.vbs]

Option Explicit
Dim wsh, scRB, scVB
Set wsh = CreateObject("WScript.Shell")
' -------------------------------------
Set scRB = CreateObject("ScriptControl")
scRB.Language = "RubyScript"
scRB.AddCode("def foo(s); return s; end")
wsh.Popup(scRB.Run("foo", "RubyScript called."))
' -------------------------------------
Set scVB = CreateObject("ScriptControl")
scVB.Language = "VBScript"
scVB.AddCode("Function bar(s) : bar = s : End Function")
wsh.Popup(scVB.Run("bar", "VBScript called"))


[その2: script.rb]

require 'win32ole'
wsh = WIN32OLE.new('WScript.Shell')
# -------------------------------------
scVB = WIN32OLE.new('ScriptControl')
scVB.Language = 'VBScript'
scVB.AddCode 'Function foo(s) : foo = s : End Function'
wsh.Popup(scVB.Run('foo', 'VBScript called'));
# -------------------------------------
scRB = WIN32OLE.new('ScriptControl')
scRB.Language = 'RubyScript'
scRB.AddCode 'def bar(s); return s; end'
wsh.Popup(scRB.Run('bar', 'RubyScript called'))


-- 
金子 尚史 (KANEKO Naoshi)
e-mail: wbs01621 / mail.wbs.ne.jp