如何对 Jekyll 扩展或插件进行猴子修补?

2024-02-08

我想重写一个 gem 方法(Jekyll 扩展),如下所示:

File: lib/jekyll-amazon/amazon_tag.rb https://github.com/tokzk/jekyll-amazon/blob/8fd9d9ff676e7e1dedd18755e5d0d98300f9e3fc/lib/jekyll-amazon/amazon_tag.rb.

module Jekyll
  module Amazon
    class AmazonTag < Liquid::Tag
      def detail(item)
...
      end
    end
  end
end
Liquid::Template.register_tag('amazon', Jekyll::Amazon::AmazonTag)

我已将具有相同结构的代码放在我的项目中的文件夹 config/initializers/presentation.rb罢工>_plugins/presentation.rb。如果我更改方法的名称detail到一个新名称,它可以工作,但我无法让它覆盖该名称detail。 我做错了什么?

(注:在 jekyll-amazon gem 0.2.2 版本中,detail方法是私有的;我已在本地更改了此设置,以便该方法不再是私有的。)


您可以使用别名方法 https://ruby-doc.org/core-2.2.2/Module.html#method-i-alias_method

module Jekyll
  module Amazon
    class AmazonTag < Liquid::Tag

      alias_method :old_detail, :detail

      def detail(item)
        # do your stuff here
        # eventually pass your stuff to old method
        old_detail(item)
      end

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

如何对 Jekyll 扩展或插件进行猴子修补? 的相关文章

  • 使用 JavaScript 访问 Jekyll 变量并通过 DOM 操作传递它

    我很可能有错误逻辑 但我刚刚学习 JavaScript 和 Jekyll 我的目标是通过 JavaScript 操作 HTML 元素 并将一些 Jekyll 变量放置在该元素的内部 HTML 中 一切都从本地开发目录加载jekyll ser
  • 如何在我的 gstreamer 中启用 httpsrc 插件?

    我尝试使用以下命令播放通过 http 检索的 mp3 文件或流 gst launch httpsrc location http domain com music mp3 mad osssink 但出现以下错误 ERREUR le pipe
  • Cordova/Phonegap 通过 JavaScript 在应用程序浏览器中打印

    我想从我正在开发的 iPad 应用程序打印一页 或某些页面 应用程序启动时所做的第一件事是通过以下代码加载外部网站 window location https 我现在想从这个外部网站打印一些东西 在 iPad 上的 Safari 中效果很好
  • 插件架构中的反射与属性

    我正在开发一个在启动时从子目录加载插件的应用程序 目前我正在通过使用反射来迭代每个程序集的类型并查找实现 IPluginModule 接口的公共类来实现此目的 由于反射涉及性能影响 并且我预计一段时间后会有多个插件 我想知道定义在程序集级别
  • Jekyll 在子网站上生成静态网站?

    是否可以将 Jekyll 放在 GitHub 上托管的网站的单个部分上 即是否可以让 example github io 成为常规站点 而 example github io blog 由 Jekyll 静态生成 我相信可以通过创建另一个名
  • 您可以使用 Jekyll 的 _includes 文件夹中的子目录吗?

    我的计划是在 includes目录 包括 页脚 包括 英雄 includes cta etc 当我引用那个时 include footers footer1 html 我收到以下错误 Liquid Exception Included fi
  • 使用 libdl 的 C 插件架构

    我一直在尝试用 C 语言编写一个小型 IRC 框架 现在我将扩展它的一些核心功能 但除此之外 我希望它可以通过插件进行扩展 到目前为止 每当我写一些与 IRC 相关的东西 我写了很多东西 现在大约有 6 种不同的语言 我很着火 并且实际上继
  • 以编程方式检查 .class 文件是否扩展特定类

    我有一个问题 我已经尝试解决好几个小时了 在 Eclipse 插件中 我有一个 ArrayList 其中包含一些 java class 文件的完整路径 作为字符串 我想做的是检查列表中包含的类是否扩展了特定的类 我考虑过解析该文件 查找 e
  • C++ 插件的“最适合”动态类型匹配

    我有一个几乎所有东西都是插件的架构 该架构以图形用户界面为基础 其中每个插件都由一个 表面 即用户可以通过其与插件交互的 UI 控件 表示 这些表面也是插件 每当添加新插件时 瘦主机都会自动确定哪个可用表面与其最匹配的 UI 如何在 C 中
  • 如何在 JFace 的 TableViewer 中创建复选框?

    我创建了一个包含两列的 tableViewer 我想将其中一列设为复选框 为此 我创建了一个 CheckBoxCellEditor 但我不知道为什么它不起作用 名为 tableName 的列显示其值正常 色谱柱规格如下 String COL
  • 用 C# 编写插件或插件框架

    我正在用 C 编写一个 Addin 框架 我想知道如何使 Addin 可以卸载而无需重新启动应用程序 我听说过 AppDomains 但是它们是如何工作的呢 外接程序是否可以添加可扩展性类并通过接口在主应用程序域中调用 并且仍然可卸载并调用
  • macOS Pluginkit 输出中的前缀是什么意思?

    执行中pluginkit match在终端中产生以下输出 跳过不重要的行 com apple ncplugin weather 1 0 com apple share SinaWeibo post 1 0 H com apple Inter
  • 如何编写 sbt 插件来通过代理启动应用程序

    我想在开源之前为我的项目创建一个 sbt 插件 该项目在应用程序运行开始时附加一个 Java 代理 以对其进行各种类型的分析 代理写出文本文件以供以后处理 我希望能够编写一个 sbt 插件 有一个替代方案run called runWith
  • 在 Angular 2、4、5、6 中实现插件架构/插件系统/可插拔框架

    2018 年 5 月 24 日更新 从我原来的帖子来看 我们现在已经是 Angular 的 3 版本了 但仍然没有最终的可行解决方案 Lars Meijdam LarsMeijdam 提出了一种有趣的方法 当然值得一看 由于专有问题 他不得
  • 使用自定义 cordova 插件未找到类异常

    我正在开发一个打印应用程序 它使用自定义 API 通过 USB 访问打印机 因此我需要一个自定义 Cordova 插件 我开始开发它 这是一个非常好的挑战 但目前也非常令人沮丧 因为我不明白为什么我的插件不能正确使用 事情是 1 插件安装正
  • 有没有适用于 IE 的 websocket 插件?

    有没有适用于 IE 的插件 我可以在 IE 7 8 9 中使用 Websockets 我还没找到 socket io 使用的后备方案之一是 flash gimite web socket js https github com gimite
  • 将此自定义 JQuery 工具提示脚本转换为 Jquery 插件

    我在一些 stackoverflow 用户的帮助下 使用 Jquery 和通用 Javascript 开发了这个工具提示脚本
  • jQuery - 检测鼠标是否静止?

    我想知道是否有一种方法可以检测 jQuery 中鼠标是否空闲了 3 秒 是否有我不知道的插件 因为我不相信有一个原生的 jQuery 方法 任何帮助将非常感激 您可以收听mousemove事件 每当发生时启动超时并取消任何现有超时 var
  • tomcat-maven-plugin 使用 Tomcat 7 - tomcat:deploy 有效,tomcat:undeploy 无效

    我有一个 tomcat deploy 的工作配置 但是当我取消部署 WAR 时 出现以下错误 这让我很困惑 INFO Scanning for projects WARNING WARNING Some problems were enco
  • 从 sublime_plugin.WindowCommand 获取当前文件名

    我开发插件sublime text 3 并想要获取当前打开的文件路径 absolute1 self window view file name 在哪里self is sublime plugin WindowCommand 但失败了 Att

随机推荐

  • Jenkins:使用 Groovy 清理工作空间

    我的 Jenkins 设置没有节点 所有构建都在同一台机器上运行 我想设置一个 Groovy 脚本来清理旧工作区 所以我想使用 proj scm processWorkspaceBeforeDeletion Nonnull Job
  • HTTPS 与 NSURLConnection - NSURLErrorServerCertificateUntrusted

    我有一个可以通过 http 连接良好的应用程序 尝试 https 时 我收到错误消息 指出根证书不受信任 我找到了我的站点证书 其 CA 证书和 CA 根证书的 URL 并通过 Safari 将它们添加到手机中 现在 当我进入 首选项 gt
  • Visual Studio 中的单元测试 MVC Web 应用程序和 QTAgent 问题

    我一直在尝试在 Visual Studio 中为 MVC 应用程序运行单元测试 并不断收到以下错误 指定的 URL http localhost 21496 与 有效目录 配置为在 IIS 中的 ASP NET 中运行的测试需要 URL 存
  • Javascript的tabIndex属性是跨浏览器的吗?

    我遇到了一个问题 并且这个答案 https stackoverflow com a 16492878 1223693解决了它 它使用该属性tabIndex 这个属性是跨浏览器的吗 哪些浏览器支持 通常我会使用 Google 来完成此任务 但
  • 无法在 SOAPUI 中导入 WSDL 文件 - NT 身份验证弹出窗口(加载 WSDL 时出错)

    我以前从未遇到过类似的问题 我尝试过 SOAP 4 0 1 和 SOAP 5 1 2 我在 Windows 上尝试过 也在 Windows Server 2008 上尝试过 我尝试导入 WSDL 出现 NT 身份验证对话框 指定 NT 身份
  • 运行时错误 91 未设置对象变量或 With 块变量 - 使用公共变量

    我目前正在开展一个项目 该项目整合了许多工作簿中的信息 虽然应用程序的第一个版本使用Select and Activate从我在本网站上看到的信息来看 应该尽可能避免使用这些方法 因此 我目前正在重新修改代码以尽可能消除这些问题 我正在使用
  • 仅通过 CSS 定位 IE9 [重复]

    这个问题在这里已经有答案了 只是想知道我的技巧包里有这些 IE 黑客 9 for IE8 and below for IE7 and below for IE6 即例如 body border 2px solid blue border 2
  • 您可以从另一台服务器发送 HTTP 响应吗?

    也许是愚蠢的问题 我最近一直在玩 Node js 喜欢设置服务器和发出请求等是多么容易 我还没有尝试过 但想知道如何将数据从一个请求转发到另一台服务器 并有第二个服务器向客户端发送响应 这可能吗 i e 客户端 gt 服务器 A gt 服务
  • 无法撤消子元素的文本装饰

    假设你有这个 html a href This is underlined span This isn t span a 还有这个CSS a hover text decoration underline I know this is en
  • 如何从字符串列表创建多个变量? [复制]

    这个问题在这里已经有答案了 我有一个字符串列表 例如 names apple orange banana 我想为列表中的每个元素创建一个列表 该列表的名称与字符串完全相同 apple orange banana 我怎样才能在Python中做
  • 如何使用实验说明符分辨率=节点运行node.js cli?

    我们的团队构建了一个用于维护的小型 CLI package json 指定了一个路径bin财产 一切都运转良好 bin eddy dist src cli entry js 自动完成是通过使用实现的 email protected cdn
  • Mongoose,如何清空集合

    我有以下 hapi js 服务器 const Hapi require hapi const Mongoose require mongoose const Wreck require wreck const server new Hapi
  • 如何修复 SOAPUI 中不支持的主次版本 52.0

    我正在 SOAPUI 中使用 groovy 脚本测试步骤运行 selenium 脚本 但出现以下错误 如何解决这个问题 java lang UnsupportedClassVersionError org openqa selenium s
  • 显示grafana点悬停的详细信息

    我使用 Influxdb 作为 grafana 的来源 在每个数据点的时间序列上 我有几个值和标签 如何将鼠标悬停在折线图中的特定数据点上显示相关数据点 或者 我可以调用一些 API 传递一些值来填充悬停时出现的工具提示 截至撰写本文时 还
  • URL 编码——& 符号问题

    我在某些字符编码方面遇到了一些问题 导致我网站上的搜索表单出现了一些问题 可能的字段值之一包含一个 符号 选择此选项并提交搜索后 符号将编码为 2526 使用页面底部的分页链接并导航到结果列表中的第二页时 符号将被编码为 26 最后 在尝试
  • JavaScript:以整数形式读取 3 个字节缓冲区

    假设我有一个十六进制数据流 我想将其分为 3 字节块 我需要将其作为整数读取 例如 给定一个十六进制字符串01be638119704d4b9a我需要读取前三个字节01be63并将其读取为整数114275 这就是我得到的 var sample
  • xcode 5:代码签名身份列表不完整

    刚刚更新并使用 xcode 5 来升级我的应用程序的第二个版本 但现在的问题出在代码签名身份上 当我打开 xcdoe 4 5 中的旧文件时 我会看到我的身份的完整列表 但在这个新项目中 只列出了一个开发人员身份 其余的 开发者和发行版 身份
  • 链接链接静态库中符号的动态库:macOS 与 Linux

    我正在将一个 Linux 应用程序移植到 macOS 链接行为存在差异 我花了一些时间才发现它的差异 该项目使用基于 CMake 的两阶段构建过程 一个 CMake 树创建一个动态库 该动态库链接到稍后创建的第二个树中创建的静态库 创建动态
  • 如何使用 Mathematica 查找 Waldo?

    这周末困扰着我 有什么好方法来解决这些问题沃尔多在哪里 https en wikipedia org wiki Where 27s Wally 3F Wally 北美以外 谜题 使用 Mathematica 图像处理和其他功能 这是我到目前
  • 如何对 Jekyll 扩展或插件进行猴子修补?

    我想重写一个 gem 方法 Jekyll 扩展 如下所示 File lib jekyll amazon amazon tag rb https github com tokzk jekyll amazon blob 8fd9d9ff676e