以前我试图给 JavaScript 的 Java 引擎 - rhino - 一个伪文件系统,我取得了成功(jszip maven 插件)
我现在将注意力转向SASS 编译器
我已经将 JRuby 集成到我的 Maven 插件中,我可以很好地调用 SASS 编译器,所以现在最后一步(在从 hack-land 到可维护代码的大重构之前)是伪造 JRuby 看到的路径,
我的感觉是我将无法重用我的 Rhino 技巧(我在 Rhino 范围内重新映射 java.io.File 类适配器),因为 Ruby 通常没有适配器层来纠正不同 Ruby VM 之间的差异
所以我的下一个想法是猴子补丁......但我不确定这会有多大的工作......
使用 JavaScript 我只需要伪造java.io.File, java.io.FileReader, java.io.FileWriter, java.io.FileInputStream,java.io.FileOutputStream
我需要在 Ruby 运行时打多少补丁......或者我最好使用基于 ASM 的重写类加载器从 JRuby 本身下面拉出地毯(我冒着破坏合法文件用于加载例如 Gems 的风险)