是否可以“卸载”(“不需要”)Ruby库?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以“卸载”(“不需要”)Ruby库?相关的知识,希望对你有一定的参考价值。
我希望加载一些库,让它们做一些工作,然后执行require
的相反操作,以避免以后出现兼容性错误。我不想转储到文件并重新启动外壳程序,因为创建的对象(例如data
)可以被我的其他库很好地处理,只是在我寻找的早期库中不存在卸载。
任何人有任何建议或知道是否可行? A conversation from 2006并没有得出太多结论,只是“看起来Webrick设法做到了这一点”。
有问题的库是Google_drive and Nokogiri(如该链接所述,电子表格处理库Roo依赖于Google_drive进行在线电子表格读写)。>>
我希望加载一些库,让它们做一些工作,然后执行require的相反操作,以避免以后出现兼容性错误。我不想转储到文件并重新启动Shell,因为...
答案
[就像@Alex所说,您可以使用Kernel#fork
创建一个新的ruby进程,在其中将Kernel#fork
您的库。新的分叉进程将有权访问父进程中加载的数据:
另一答案
我不知道有什么方法可以卸载文件,但是您可以将选择的全局变量重置为nil并取消定义常量(足够接近):
另一答案
[不幸的是,Ruby的几个特性最终都希望完全“卸载”一个库。首先,“加载” Ruby库可以运行任意Ruby代码。其次,可以在Ruby中动态地重新定义现有的常量和方法。
另一答案
尽管通常怎么说,使用此过程可以取消/卸载软件包。- 假设所需文件以这种简单的内容存储为https://github.com/jonleighton/spring:
以上是关于是否可以“卸载”(“不需要”)Ruby库?的主要内容,如果未能解决你的问题,请参考以下文章