2010-06-21 42 views
0
requrie 'yaml' 
hash = {:title=>'abc'} 
hash.to_yaml 

将输出:'to_yaml'时,我们可以强制渲染文本为二进制文件吗?

--- 
title: abc 

有没有方法来强制标题为二进制,如:

--- 
title: !binary| 
    5Lit5pa 

UPDATE

我问这是因为我想从数据库转储数据到yml文件。但在数据库中的文本,包括英语和非英语文本,都可能有这样的代码:

<% xxx %> 

当我使用rake db:fixtures:load,会有像method xxx not found错误。

在写入文件之前,我可以将'<%'替换为'< %%',但它只适用于英文文本 - 如果有任何非英文字符,内容将是二进制。加载回来时,'< %%'仍然是'< %%'。除非我可以强制'to_yaml'始终使用'binary'作为文本,否则我找不到一个好的解决方案。

+0

只是一个简短的提示:您抛弃了一个很好的事实,即YAML已经定义了在将文本存储为二进制文件时要使用哪种字符编码。这使互操作性变得更加困难。 – Joey 2010-06-21 08:36:38

回答

1

简短的答案是'不'。

长 - 用您的自定义实现替代String#to_yaml(或Object#to_yaml)方法。

相关问题