问题标签 [monkeypatching]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 如何修补现有的 gem(Rails 引擎)?
我开始使用 Ruby 和 Rails 3。我想使用一个 Rails 引擎(打包为 Gem),但它并不能完全按照我的意愿工作。我想进行一些细微的修改,但不想创建自己的分叉版本。我认为这是猴子修补变得有用的地方。
作为 Ruby 新手(并且来自 PHP 背景)猴子补丁对我来说是一个新概念。我将如何着手修补现有的 gem,我将如何组织我的修改?我正在寻找一些“最佳实践”方法。
python - 什么是猴子补丁?
我想了解,什么是猴子补丁或猴子补丁?
这是否类似于方法/运算符重载或委托?
这些东西有什么共同点吗?
ruby - 在模块中打开类
我知道我可以执行以下将方法添加到 String 类
这将返回4
我希望能够拥有一个带有接收字符串的函数的模块,但能够do_something
在该字符串上调用该方法(例如见下文) - 有可能吗?
编辑:添加了不起作用的示例代码
这给出了错误:undefined method 'do_something' for "hello":String (NoMethodError)
ruby - 什么猴子补丁创建了私有方法拆分?
Ruby: Private method called for 3:Fixnum和private method `split' called for nil:NilClass (NoMethodError) 问题分别提到split
了Fixnum
和NilClass
对象的私有方法。
这个私有split
方法是一个猴子补丁的伪关键字(比如print
and puts
)吗?如果是这样,添加了什么,为什么他们使用已经存在的方法名称String
?
javascript - “猴子补丁”真的那么糟糕吗?
像 Ruby 和 JavaScript 这样的一些语言有开放的类,允许你修改核心类的接口,比如数字、字符串、数组等。显然这样做可能会使其他熟悉 API 的人感到困惑,但是否有充分的理由避免它,假设您要添加到界面而不更改现有行为?
例如,将Array.map实现添加到不实现 ECMAScript 第 5 版的 Web 浏览器(如果您不需要所有 jQuery)可能会很好。或者您的 Ruby 数组可能会受益于使用“inject”的“sum”便捷方法。只要更改与您的系统隔离(例如,不是您为分发而发布的软件包的一部分),是否有充分的理由不利用此语言功能?
java - JRuby - Monkeypatching 作为穷人的安全经理?
选择性地猴子修补所有 Ruby 核心类(文件、内核、IO 等)以创建一种访问控制有什么问题吗?
我的 JVM 将运行不受信任的用户代码,出于某些原因,我不想使用 Java 的安全管理器。因此,我求助于 Ruby 开放类来实现我自己的沙箱。我已经对几乎所有的核心类进行了猴子补丁,但由于某种原因,我觉得这还不够安全。我是偏执狂,还是这真的是一个糟糕的解决方案?
在一个相关的问题中,有没有办法从我的 Ruby 运行时中选择性地排除 Java。我的库需要 Java,但我不希望用户能够访问它。我已经在我的库中包含了 Java,而这些库又被“必需”到了用户脚本中。
任何帮助,将不胜感激。谢谢!:)
ruby - 如何正确修补 Ruby?
我正在尝试对标准库中 Net 类中的一行进行monkeypatch。我在项目的 lib 文件夹中创建了一个名为 patch.rb 的文件并添加了这个
但它不起作用。我这样做对吗?(这与继承层次结构完全平行。)
编辑:部分问题是我必须将文件放在 initalizers 文件夹中。但仍然看到同样的错误。
ruby-on-rails - Rails 2.3+Rake:用于 rake 任务的类的猴子补丁方法
您如何对 rake 任务中使用的类的方法进行修补?特别是我想重新定义Synthesis::AssetPackage#compress_js
asset:packager插件的方法。我试图将重新定义放在Rakefile
in 中RAILS_ROOT
,但这没有用。我宁愿不直接更改插件。
javascript - 是否可以像 C# 或像 Ruby 那样给 javascript 部分类行为或猴子补丁?
部分类背后的想法是您可以将某些函数组合在一起。C# 中最好的例子是将控件定义放在一个文件中,而将事件处理程序放在另一个文件中。在 Ruby 中,您可以使用 Monkey 修补来替换整个函数等,以获取代码来执行您想要的操作。
我还没有找到这样做的理由,但我认为随着网络的改进,更多的应用程序将在客户端,所以我想知道我在服务器端语言中发现的一些很棒的功能,我也可以在 Javascript 中使用。
有人知道吗?
python - 猴子补丁 __del__ 到新功能
出于特定调试目的,我想包装任意对象的del函数以执行额外的任务,例如将对象的最后一个值写入文件。
理想情况下我想写猴子(x),它应该意味着当x被删除时,x的最终值被打印出来
现在我认为del是一个类方法。所以下面是一个开始:
但是,如果我只想猴子特定的对象,我想我需要动态地将它们的类重写为一个新的类?!此外,无论如何我都需要这样做,因为我无法访问内置类型的del ?
任何人都知道如何实施?