3

我有一个应用程序需要运行与应用程序本身交互的 Ruby 代码作为一种扩展。问题是,我需要能够运行 Ruby 解释器的单独实例,因为一个扩展不能影响另一个。

另一个问题是我需要解释器完全包含在我的可执行文件中,所以 Rubinius 是毫无疑问的。MRuby,虽然还在开发中,但是好像可以这样运行,但是太有限了。有没有办法用 MRI 或任何其他比 MRuby 更强大的实现来做到这一点?

4

2 回答 2

3

你用什么语言编写你的基础应用程序?C++?

您可以分叉 Ruby 任务,这些任务将运行单独的 Ruby 实例,每个实例都是独立且自治的。您必须决定是否要与他们交谈和控制他们。或者您可以使用一些 IPC,popen用于在您的代码和正在运行的 Ruby 应用程序之间来回交流。

听起来你正处于“哎呀,如果不是很好”阶段,而不是“我该怎么做?” 阶段。查看“如何控制 popen stdin、stdout、stderr 重定向? ”进一步讨论。

于 2013-04-19T16:41:48.393 回答
2

Rubinius、JRuby 和 IronRuby 是我所知道的唯一能够在每个进程中拥有多个 Ruby 环境的工具。

于 2013-04-19T16:40:07.697 回答