我使用这个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 "Test"^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 "Test"rntrntexit 0rnt</string>nt
找不到^M。有什么建议我应该在哪里寻找这个问题吗?
当plist在行尾有^M时,另一个对该plist进行应答的程序不能正确读取它。当我尝试手动删除^M时,它工作得很好。
感谢mu太短
指出r
实际上是^M
的原因。在这种情况下,我刚刚修复了这个bug !!
非常简单的修复,只需添加以下内联来重写to_plist
方法
plist.gsub(/rn?/, "n")
这就是我想要的