ruby - 临时修改(核心)Ruby 模块的库

标签 ruby metaprogramming rubygems

我曾经遇到过一个 Ruby 库(我不确定它曾经被打包为 gem),它允许您方便地对 Ruby 模块应用临时修改。这些修改只会在“with”声明中执行的 block 中有效,例如:

with(modifications) do
  [interesting stuff requiring the modifications]
end

它确保您不需要为了在某些地方完成一些特殊的事情而永久污染(核心)模块。

作为我想做的具体例子:我想定义一个“in?” Fixnum 上的方法,因此内部 DSL 的用户可以键入:

if value.in? [12, 16, 27, 28]
  [do something interesting]
end

我会用“with”方法包装 DSL 评估,这样我就不必用它来污染 Fixnum 了吗?方法。我知道这并不难做到,但可能会有一些黑暗的角落,我的印象是这个图书馆对于这个目的来说非常方便。

有人知道我要找的这个图书馆的名字吗?我似乎记得它是“plusplus”之类的东西,但谷歌没有给我任何东西。

最佳答案

嗯..这听起来像是对 Ruby 2 中可能包含的内容的提议。 http://yehudakatz.com/2010/11/30/ruby-2-0-refinements-in-practice/

关于ruby - 临时修改(核心)Ruby 模块的库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4538143/

相关文章:

c++ - 递归构造 unsigned int 的可变参数模板

ruby - 这个 define_method 用例是不是太复杂了?

haskell - 如何轻松查看 Template Haskell 语句的输出?

ruby - 在 Gem 构建中保留空目录

ruby-on-rails - Rspec - 从插件切换到 gems 的问题

ruby - 使用 Ruby mechanize 填写表单

ruby-on-rails - 在 Ruby 中发送 HTTP/2 POST 请求

ruby-on-rails - .rewind 方法对 ruby​​ 中的 Tempfile 做了什么?

ruby-on-rails - 在 heroku 上部署 Rails 失败,出现 NameError : wrong constant name [[:error, ["detected unsupported rails version 6.0.1"], nil]]

ruby-on-rails - 添加 devise gem 后登录页面出错