我有一个Ruby gem,我正在用Rake compiler ExtensionTask构建一个原生扩展。我想在基于extconf.rb
中计算的信息构建扩展后采取一些操作。我尝试将信息写入extconf.rb
中的全局变量,然后在Rakefile中访问这些全局变量,但它们是空的。有没有办法把这些信息转移到Rakefile?
我有一个Ruby gem,我正在用Rake compiler ExtensionTask构建一个原生扩展。我想在基于extconf.rb
中计算的信息构建扩展后采取一些操作。我尝试将信息写入extconf.rb
中的全局变量,然后在Rakefile中访问这些全局变量,但它们是空的。有没有办法把这些信息转移到Rakefile?
1条答案
按热度按时间ymzxtsji1#
Rake编译器在子进程中调用
extconf.rb
(这里),所以你不能从Rakefile
中访问变量(例如常量)的数据,至少不能直接访问。基本上,您希望在两个不同的进程之间进行通信。有很多工具可以做到这一点,UNIX或Ruby。以下是一些选项:
1.将序列化数据写入临时文件(我选择
JSON
),然后读取它。较少涉及的选项,但对于大多数用例来说绰绰有余1.使用
File.mkfifo
的FIFO特殊文件,并在另一个线程中读取它。1.使用
DRb
,您仍然需要Thread.fork
。P.S:我现在明白了,这是很久以前问的,如果你找到了解决方案,我很高兴看到它!