Chr*_*dus 6 ruby debugging ruby-on-rails
我已经尽可能地搜索了这个问题,但我完全被关键字!二进制作为搜索引擎(包括stackoverflow的内部搜索!)去除了感叹号.
我正在通过http://ruby.railstutorial.org上的Rails tuorial工作- whcih在很大程度上是一个很好的资源.我在application.html.erb页面底部的一个有用的东西是:
<%= dump(params) %>
Run Code Online (Sandbox Code Playgroud)
我被告知特定情况应输出以下内容:
--- !map:ActiveSupport::HashWithIndifferentAccess
commit: Sign in
session: !ActiveSupport::HashWithIndifferentAccess
password: ""
email: ""
authenticity_token: BlO65PA1oS5vqrv591dt9B22HGSWW0HbBtoHKbBKYDQ=
action: create
controller: sessions
Run Code Online (Sandbox Code Playgroud)
相反,我得到以下内容:
--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
!binary "dXRmOA==": ?
!binary "YXV0aGVudGljaXR5X3Rva2Vu": ItPS/PZ+avYOGD2ckict1urJpatw1HinrVyk385/Yt8=
!binary "c2Vzc2lvbg==": !ruby/hash:ActiveSupport::HashWithIndifferentAccess
!binary "dXNlcm5hbWU=": ''
!binary "cGFzc3dvcmQ=": ''
!binary "Y29tbWl0": Sign in
action: create
controller: sessions
Run Code Online (Sandbox Code Playgroud)
这远没那么有用.
我假设rails可以选择输出数据,因为它在内存中(即二进制形式),或者它可以解码数据并以纯文本显示.
我显然得到了正确的数据,只是形式错误.
问题是如何获得纯文本版本?
第二个问题是为什么像stackoverflow这样的网站没有在搜索中包含特殊字符的机制?IMO的基本失败
我相信这是密钥的字符串编码,!binary
尽管其中没有非 7 位 ASCII 字符,但它的表示方式很奇怪。这些值被编码为 base-64 以纯文本形式呈现:
"dXRmOA==".unpack('m')
# => ["utf8"]
Run Code Online (Sandbox Code Playgroud)
这可能是您的环境造成的,默认字符串编码不规则。