Ruby plist gem在行末生成插入符号^M,如何删除



我使用这个plist gem生成一个plist文件,如果请求是http://myrailsapp/something.plist,我的Rails应用程序将输出给用户

负责此操作的代码非常简单。(控制器)

if @package.present?
   format.html
   format.plist { render :text => @package.to_plist }

在Vim中查看,给出

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>uninstall_script</key>
        <string>#!/bin/sh^M
        ^M
        echo &quot;Test&quot;^M
        ^M
        exit 0^M
        </string>
        <key>uninstallable</key>
        <true/>
        <key>version</key>
        <string>4.7</string>
</dict>
</plist>

在每个以^M

结尾的字符串行上

当我尝试在rails控制台中调试它时,它输出很好

<key>uninstall_script</key>nt<string>#!/bin/shrntrntecho &quot;Test&quot;rntrntexit 0rnt</string>nt

找不到^M。有什么建议我应该在哪里寻找这个问题吗?

当plist在行尾有^M时,另一个对该plist进行应答的程序不能正确读取它。当我尝试手动删除^M时,它工作得很好。

感谢mu太短

指出r实际上是^M的原因。在这种情况下,我刚刚修复了这个bug !!

非常简单的修复,只需添加以下内联来重写to_plist方法

plist.gsub(/rn?/, "n")

这就是我想要的

最新更新