0

当我运行时ri Hash,该stringify_keys方法在某些列表中显示为实例方法,其中每个列表似乎与不同的 gem 或 gem 版本相关联。

但是当我尝试从 irb shell 调用它时,它失败了:

irb(main):035:0> h
=> {:this=>"this value", :that=>"that value"}
irb(main):031:0> h.instance_of? Hash
=> true
irb(main):032:0> h.stringify_keys
NoMethodError: undefined method `stringify_keys' for {:this=>"this value", :that=>"that value"}:Hash
        from (irb):32
        from /usr/local/bin/irb:12:in `<main>'

此外,当我h.methods.sort在 IRB 中运行时,stringify_keys没有将其列为方法。

有人可以解释这种差异吗?是因为我的环境已经过时还是我对 Ruby 文档不了解?

4

1 回答 1

7

Rails(通过 ActiveSupport)猴子将stringify_keys方法修补到其中Hash,因此您不会在普通irb会话中使用它。您可以通过以下方式加载核心扩展:

require 'active_support/core_ext'

有关加载单个猴子补丁的详细信息,请参阅Active Support Core Extensions Guide

于 2012-09-23T20:02:39.917 回答