我正在重构一些加载到Rails控制台的调试工具.调试工具用于使用在代码中修改的全局变量,但出于显而易见的原因,我想将其限制为命名空间,因此我将所有内容都放入类中并使用类实例变量.
在某些时候,这些工具需要#reload!
在控制台中调用,控制台是在main
对象上定义的.将工具移动到新类后,将main
无法再访问已定义的方法.是否有一种main
从命名空间内部访问的好方法,以便我可以调用#reload!
它?
现在,我有一个工作黑客,TOPLEVEL_BINDING.receiver.reload!
但我相信必须有一个更好的方法.一个更好的解决方案也可能对Ruby命名空间有所帮助.
例如
class MyAwesomeTools
def reload!
# or whatever executes #reload! with main as the receiver
MAIN_NAMESACE.reload!
end
end
Run Code Online (Sandbox Code Playgroud) ruby ×1