以前我试图给 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 的风险)