26得票2回答
将Ruby类转换为模块的更好方法是什么,而不是使用修饰语?

Module#refine方法接受一个类和一个块,然后返回一个修饰模块。因此,我想我可以定义:class Class def include_refined(klass) _refinement = Module.new do include refine(klass)...

16得票2回答
精细化调整仅适用于实例方法吗?

我正在尝试理解Ruby的refinements功能,并遇到一个我不理解的场景。 拿这段示例代码来说:class Traveller def what_are_you puts "I'm a Backpacker" end def self.preferred_accom...

10得票2回答
如何在Rails视图中使用Ruby Refinements?

我有一个使用Ruby 2.0的Rails 4项目。我定义了一些代码的改进(refinements)。<% using MyRefinements %> 在视图文件的顶部加入会导致错误 "undefined method 'using'"。当我添加:using MyRefinemen...

9得票1回答
Ruby细化(refinements)的陷阱

在《Ruby元编程(第二版)》第二章“Refinements”一节中,我找到了下面这段Ruby代码: class MyClass def my_method "original my_method()" end def another_method my_m...

8得票1回答
Ruby改进和钩子

我正在尝试使用Ruby修饰符来应用Rails钩子。 我希望避免猴子补丁。当进行猴子补丁时,它会按如下方式工作 ActiveRecord::Base.class_eval do after_find do # do something with my_method...

7得票1回答
当我在IRB中使用Refinement时,为什么会出现“main.using is permitted only at toplevel”的提示?

我尝试在IRB(v0.9.6,Ruby 2.3.0)中使用Refinement: module Foo refine Object do def foo() "foo" end end end using Foo # => RuntimeError: main.usi...

7得票1回答
Ruby 优化细节

这里有一份关于 Ruby 中实现 Refinements 的文档:http://ruby-doc.org//core-2.2.0/doc/syntax/refinements_rdoc.html,它叙述得相当详细,但是还有一些奇怪的边界情况。 首先,include module 和 usin...