【发布时间】:2017-01-07 22:55:06
【问题描述】:
我正在使用 C Ruby 接口在 swift 应用程序中嵌入一个 ruby 解释器(不过,我使用的 swift 与 Imo 无关)
我觉得 Ruby 必须有某种方法可以完全重新初始化自己。
我正在像这样初始化虚拟机:
var variable_in_this_stack_frame:UnsafeMutablePointer<VALUE>? = nil
ruby_init_stack(variable_in_this_stack_frame)
ruby_init()
ruby_init_loadpath()
rb_require("enc/encdb")
rb_require("enc/trans/transdb")
var node = ruby_options(Int32(options.count), &cargs)
评估一些代码:
var state: Int32 = 0;
if ruby_executable_node(node, &state) != 0 {
state = ruby_exec_node(node)
}
if state != 0 {
throw RubyError(err: RTypedValue(VALUE: rb_errinfo()))
}
并像这样销毁虚拟机:
var state: Int32 = 0
ruby_cleanup(state)
然而,第二次做这一切,我得到EXC_BAD_ACCESS运行时:ruby_init_loadpath()
我应该如何重新初始化?
【问题讨论】:
标签: ruby swift ruby-c-extension embedded-ruby mri