Tag: yaml

在YAML文件中哈希?

我想在我正在使用以下命令解析的YAML文件中包含一个哈希和列表: APP_CONFIG = YAML.load_file(“#{RAILS_ROOT}/config/config.yml”) 我的YAML文件如下所示: feeds: [{:url => ‘http://www.google.com’, :label => ‘default’}] 但这似乎不起作用。 我将如何实现这样的目标? 谢谢,Yuval 编辑:对不起,伙计们。 我仍然不清楚如何做到这一点,我怀疑这部分是由于我有些模糊的措辞。 我在这里问了一个更好的,更广泛的问题。 谢谢!

将JSON数据嵌入到YAML文件中

我正在为我的桌子写一个夹具。 并且其中一个coloums将JSON字符串作为值。 问题是夹具没有加载失败,因为: Fixture::FormatError: a YAML error occurred parsing /home/saurajeet/code/dcbox/test/fixtures/hardware.yml. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Please have a look at http://www.yaml.org/faq.html The exact error was: ArgumentError: syntax error on line 145, col 73: ` portslist: [{“name”:”ob1″,”port_num”:0,”port_type”:”network”},{“name”:”ob2″,”port_nu’….. 任何解决方案。

覆盖database.yml的策略?

在我的环境中,部署服务器具有database.yml中的大量连接信息。 也就是说,他们知道它们是开发服务器,测试服务器还是生产服务器,并且知道它们各自的数据库连接信息。 我可以将此信息封装在Server类中,以便我可以检索信息: Server[“environment”] #=> production Server[“db_host”] #=> db5.example.com Server[“db_password”] #=> [a decrypted password] 等等。 我想部署一个Rails应用程序,并根据服务器设置进行自动配置。 做这个的最好方式是什么? 一种方法是在我的database.yml中使用Erb: : adapter: oracle_enhanced host: username: db_user password: 我不是太兴奋这样做,但它会工作。 在这种情况下,我将在哪里放置定义Server类的’server.rb’ – 在yml中需要它? 在ActiveRecord加载database.yml之后加载app / initializers。 另一种可能的解决方案是以某种方式覆盖railties的数据库初始化器: # File railties/lib/initializer.rb, line 903 def database_configuration require ‘erb’ YAML::load(ERB.new(IO.read(database_configuration_file)).result) end 仅在以下情况下调用上述内容:在config.frameworks中定义了active_record。 我不确定如何在Rails启动序列中尽早覆盖这一点。 也许第三个选项是从config.frameworks中删除 :active_record,然后在应用程序初始化程序中创建连接? 我担心这可能会产生很多意想不到的副作用。 我希望有一些简单而明显的东西我没有找到,例如ActiveRecordfunction允许我选择退出database.yml并以编程方式提供备用配置。

如何使用Psych在YAML文档中发出评论?

我想生成一个YAML文档,其中包含序列元素之间的一些注释,但我无法弄清楚如何执行此操作。 有什么指针吗?

如何使用TCPServer序列化对象?

为了加快我的链中特定脚本的频繁重复运行,我开始序列化到磁盘自定义对象,否则需要花费太多时间来创建聚合。 使用内置的Yaml和/或Marshal。 Yaml序列化为看似健康的文本文件,但在尝试反序列化时会产生以下错误: b2 = YAML::load(File.open(“browserObj.yaml”, ‘r’)) Syck::TypeError: Invalid Regular expression: “/\\A\\s*\n ([a-zA-Z][-+.a-zA-Z\\d]*): …and many more strange lines 但是,即使尝试通过Marshal错误保存到二进制文件: puts File.open(“browserObj.bin”, ‘w’).write Marshal::dump($browser) TypeError: can’t dump TCPServer # Marshal::dump($browser, File.open(“browserObj.bin”, ‘wb’)) # same error 故意不在最后做$browser.close我可以选择在我的Ruby脚本生命周期之后保持这个TCPServer活着并运行。 有什么想法我怎么能逃脱这个? 我保证成功重新加载以仔细检查任何套接字/内部对象的有效性,并且如果必须的话,只需重新初始化一个全新的对象。

Rails:使用序列化哈希编码问题,尽管UTF8

我刚刚从ruby 1.9.2更新到ruby 1.9.3p0(2011-10-30修订版33570)。 我的rails应用程序使用postgresql作为其数据库后端。 系统区域设置是UTF8,数据库编码也是如此。 rails应用程序的默认编码也是UTF8。 我有中国用户输入汉字和英文字符。 字符串存储为UTF8编码的字符串。 Rails版本:3.0.9 由于更新,数据库中的一些现有中文字符串不再正确显示。 这不会影响所有字符串,只会影响序列化哈希的一部分。 存储为纯字符串的所有其他字符串仍然看起来是正确的。 例: 这是一个序列化哈希,在数据库中存储为UTF8字符串: broken = “— !map:ActiveSupport::HashWithIndifferentAccess \ncheckbox: \”1\”\nchoice: \”Round Paper Clips \\xEF\\xBC\\x88\\xE5\\x9B\\x9E\\xE5\\xBD\\xA2\\xE9\\x92\\x88\\xEF\\xBC\\x89\\r\\n\”\ninfo: \”10\\xE7\\x9B\\x92\”\n” 为了将此字符串转换为ruby哈希,我使用YAML.load反序列化它: broken_hash = YAML.load(broken) 这将返回带有乱码内容的哈希: {“checkbox”=>”1”, “choice”=>”Round Paper Clips ï¼\u0088å\u009B\u009Eå½¢é\u0092\u0088ï¼\u0089\r\n”, “info”=>”10ç\u009B\u0092”} 乱码的东西应该是UTF8编码的中文。 broken_hash[‘info’].encoding告诉我ruby认为这是# 。 我不同意。 有趣的是,之前没有序列化的所有其他字符串看起来都很好。 在同一记录中,不同的字段包含看起来正确的中文字符—在rails控制台,psql控制台和浏览器中。 每个字符串—无论是序列化哈希还是普通字符串—都保存到数据库中,因为更新看起来也很好。 我试图将乱码文本从可能的错误编码(如GB2312或ANSI)转换为UTF-8,尽管ruby声称这已经是UTF-8了,当然我失败了。 这是我使用的代码: require ‘iconv’ Iconv.conv(‘UTF-8’, ‘GB2312’, broken_hash[‘info’]) 这失败了,因为ruby不知道如何处理字符串中的非法序列。 我真的只想运行一个脚本来修复所有旧的,可能是破坏的序列化哈希字符串并完成它。 有没有办法将这些断弦转换成类似中文的东西? 我只是在原始字符串中使用编码的UTF-8字符串(在上面的示例中称为“已损坏”)。 这是在序列化字符串中编码的中文字符串: […]

如何在Ruby中的YAML文件中包含YAML文件

在YAML中是否有自定义标记用于ruby以在YAML文件中包含YAML文件? #Eg: — !include filename: another.yml 前一段时间问了一个类似的问题,没有相关的答案。 我想知道是否有一些类似于Python的自定义标记用于Python。

如何在YAML文件的顶部删除“—”?

我正在修改Ruby中的YAML文件。 在我回写修改后的YAML后,我看到—添加在文件顶部。 这是如何被添加的,我该如何摆脱它?

从xml名称值转换为简单哈希

我不知道这是什么名字,这使我的搜索变得复杂。 我的数据文件OX.session.xml是(旧的?)forms FE5E27A056944FBFBEF047F2B99E0BF6 8228-5500 967454 那个XML数据格式到底是什么? 无论如何,我想要的是在我的Ruby代码中最终得到一个哈希,如下所示: CAppLogin = { :SessionID => “FE5E27A056944FBFBEF047F2B99E0BF6”, :AccountNum => “8228-5500”, etc. } # Doesn’t have to be called CAppLogin as in the file, may be fixed 什么可能是最短的,最内置的Ruby方式来自动化哈希读取,我可以更新SessionID值并将其轻松存储回文件以供以后的程序运行? 我玩过YAML,REXML但是还不想打印我的(坏)示例试验。

读取和写入YAML文件而不破坏锚点和别名?

我需要打开一个YAML文件,其中包含别名: defaults: &defaults foo: bar zip: button node: <<: *defaults foo: other 这显然扩展到了一个等效的YAML文档: defaults: foo: bar zip: button node: foo: other zip: button 哪个YAML::load读取它。 我需要在这个YAML文档中设置新密钥,然后将其写回磁盘,尽可能保留原始结构。 我看过YAML :: Store ,但这完全破坏了别名和锚点。 是否有任何可用的东西: thing = Thing.load(“config.yml”) thing[:node][:foo] = “yet another” 将文档保存为: defaults: &defaults foo: bar zip: button node: <<: *defaults foo: yet another ? 我之所以选择使用YAML是因为它很好地处理了这种混叠,但是编写包含别名的YAML在现实中看起来有点像一个看起来很暗淡的游戏领域。