是否可以“卸载”(“不需要”)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库?的主要内容,如果未能解决你的问题,请参考以下文章

Chrome-Devtools代码片段中的多个JS库

ruby 我感兴趣的库中的代码片段

如何从/ usr / local卸载Ruby?

gitlab 9.0对ruby的版本有要求吗

macbook 怎么卸载brew

如何从 /usr/local 卸载 Ruby?