哈希#stringify_keys未定义

时间:2012-09-23 19:45:14

标签: ruby

当我运行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>'

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

有人可以解释这种差异吗?这是我的环境过时还是我不了解Ruby文档的问题?

1 个答案:

答案 0 :(得分:7)

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

require 'active_support/core_ext'

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