0

を実行するri Hashと、stringify_keys一部のリストでメソッドがインスタンス メソッドとして表示され、各リストが異なる gem または gem バージョンに関連付けられているように見えます。

しかし、irb シェルから呼び出そうとすると、失敗します。

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.sortIRB で実行する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 に答える