冲突的红宝石

2023-11-21

我需要在我的项目中使用两个 gem,它们都声明 PDF 命名空间:pdf-reader 和 htmldoc。

有什么办法可以让他们一起愉快地玩耍吗?我能想到的唯一方法是重写我自己的 htmldoc 版本,为其提供不同的命名空间。


基本上,你无能为力。在 Ruby 中使用是一个很好的做法独特的顶级命名空间中的名称恰恰出于这个原因,您恰好偶然发现了两个违反该做法的库。

一件事你could做的就是使用Kernel#load代替Kernel#require. Kernel#load接受一个可选的布尔参数,这将告诉它评估匿名模块中的文件。但请注意,这绝不是安全的:完全有可能明确地将东西放在顶级命名空间中(使用类似module ::PDF),从而突破匿名模块。

另请注意,API 确实很糟糕:load只是返回true or false, 就像require做。 (事实上​​,自从load always负载,它always回报true.)实际上没有办法get在匿名模块中。你基本上必须把它从ObjectSpace用手。哦,当然,由于没有任何内容实际引用匿名模块,因此它将被垃圾收集,因此您不仅需要在内部进行翻查ObjectSpace to find该模块,你还必须race垃圾收集器。

有时,我希望 Ruby 有一个合适的模块系统,如 Newspeak、Standard ML 或 Racket。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

冲突的红宝石 的相关文章

随机推荐

  • 使用正则表达式和 JavaScript 突出显示 html 中的单词 - 几乎就在那里

    我正在编写一个 jquery 插件 它将执行浏览器样式的页面查找搜索 我需要改进搜索 但还不想解析 html 目前我的方法是获取整个 DOM 元素和所有嵌套元素 然后简单地对给定术语运行正则表达式查找 替换 在替换中 我将简单地在匹配的术语
  • 如何解码 OSRM 中的编码折线并绘制路线几何图形?

    我正在使用 OSRM OpenStreetMap 路由机 的实例来评估不同点的距离和时间 使用 API 我可以检索我想要和需要的信息 尤其是作为折线的真实路线 直到今天 我已经在起点和终点之间绘制了直线 segments lon patie
  • 随机重新排序(打乱)矩阵的行?

    我想随机重新排序矩阵 A 的行以生成另一个新矩阵 在 R 中如何做到这一点 Use sample 以 伪 随机顺序生成行索引并使用以下命令对矩阵重新排序 create a matrix A for illustration A lt mat
  • 检测浏览器是否支持嵌入媒体自动播放 - YouTube playVideo() 和 iOS

    检测浏览器是否支持嵌入媒体文件自动播放的最佳方法是什么 在 iOS 也可能是 Android 设备上使用 youtube javascript API 如果您调用playVideo 在用户点击视频之前 视频处于不良状态并且基本上无用 当您想
  • CSS :: .className 和 div.className 之间的区别

    我写了一个 html 元素 如下所示 div class box Foo box div 并像这样编写CSS box width 400px height 40px color red text align center or div bo
  • 从 PID 中获取名称?

    我在 OSX Mountain Lion 上 并尝试使用 PID 检索进程的名称 以下是我正在使用的代码 pid t pid 10687 char pathBuffer PROC PIDPATHINFO MAXSIZE char nameB
  • 在 android marshmallow 上获取 realPath 返回 null?

    我正在使用此函数从 uri 获取图像路径 private static String getRealPathFromURI Context context Uri contentUri Cursor cursor null try Stri
  • 如何让 xdebug var_dump 显示完整的对象/数组

    我在用xdebug php xdebug 2 1 2 5 3 vc9 dll 上WAMP 当我使用var dump在大对象或变量上 它不显示完整的变量 array node gt array my form gt array form gt
  • Visual Studio:使用属性使视图代码默认

    我知道怎么做配置 VS 2008 在代码中而不是设计器中打开 Windows 窗体控件 但我想我已经找到了一种方法 可以使用一个可以装饰所需控件的属性来实现此目的 有人知道它的名字吗 如果您希望在设计器中打开一些控件并在 C 代码视图中打开
  • 无法使用 JavaScript 在 IE 上打印 iframe,而是打印父页面

    我有以下 JavaScript 代码 document ready function a print button click function event event preventDefault var print url print
  • XMLHttpRequest 无法从模拟器上的 android asset 文件夹加载文件

    我是混合开发的新手 我编写了一个启动 webview 的小应用程序 我在 asset 文件夹中复制了 XML JS 文件 应用程序在我的三星平板电脑上运行良好 但在模拟器上出现以下错误 05 30 06 09 07 080 I 铬 1245
  • @font-face导轨3.2

    我正在考虑尝试使用 font face 在我的 Rails 应用程序中使用 font squirrels 字体 希望这是解释它的正确方式 我对此还比较陌生 所以希望有人能就如何让它在 Rails 应用程序中工作提供建议 Thanks 好吧
  • Mysql 在使用 LIKE 搜索时连接两列

    我正在尝试进行 MySQL 查询 其中使用 LIKE 关键字根据搜索文本过滤记录 例如 如果用户搜索Illusion Softwares where Illusion是名字并且Softwares是姓氏 因此查询应搜索列 FirstName
  • 获取多行 UILabel 最后一行的宽度

    我有一个动态多行 UILabel 需要知道可见文本 不是标签 的文本结尾 X 坐标 以便我可以在文本后面显示一些内容 这可能吗 谢谢 您将能够使用 CoreText 框架更好地控制文本布局 查看文档 还有一些不错的开源东西已经为您做了很多艰
  • Android 布局土地不工作

    我一直在 stackoverflow 中查看问题 并尝试了我所见过的所有方法 但布局区域不起作用 在我的代码中我有和方法onConfigurationChanged Override public void onConfigurationC
  • 未知未知的本机崩溃

    我有一个完全用 Java 编写的应用程序 没有任何本机代码 并且我在开发人员控制台上两次收到崩溃报告 未知未知的本机崩溃 我不知道从哪里开始查找问题的根源 搜索仅在 Android 错误 NDK 使用或有错误的第三方库的情况下发现这种类型的
  • 在 Python 中一次更改列表中的多个项目

    我可以在Python中一次更改列表中的多个项目吗 问题1 例如 我的清单是 lst 0 0 0 0 0 我想要第三项和第五项变成99 我知道我可以做到 lst 2 99 lst 4 99 然而 有没有更简单的方法来做到这一点呢 问题2 在这
  • 如何在不安装 numpy 的情况下使用它?

    我通过控制台访问没有 root 或 sudo 权限的计算机 Python版本是2 5 2 numpy不可用 我无法使用 python setup py install user 机器上也没有任何可用的编译器 我可以以某种方式使用可用的编译包
  • 如何过滤 std::integer_sequence

    如果理论上我有一个整数序列 例如 std integer sequence
  • 冲突的红宝石

    我需要在我的项目中使用两个 gem 它们都声明 PDF 命名空间 pdf reader 和 htmldoc 有什么办法可以让他们一起愉快地玩耍吗 我能想到的唯一方法是重写我自己的 htmldoc 版本 为其提供不同的命名空间 基本上 你无能