小编Dav*_*dow的帖子

如何从命名空间内访问主对象?

我正在重构一些加载到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
推荐指数
1
解决办法
84
查看次数

标签 统计

ruby ×1