我需要能够创建一个Ruby应用程序(如果可能的话没有Rails),打开一个外部YAML文件,其中包含超过104K行代码,从中读取并过滤掉以下三件事:
!ruby/object:EvtEvent
!ruby/object:NwsPost
!ruby/object:Asset
然后将这些内容输出到一个必须由Ruby程序构建的XML文件中。
我不清楚如何开始设置,因为我只是一名具有一年经验的初级开发人员。
虽然我在Stack Overflow上发现了一些关于使用Nokogiri的代码示例的代码片段,但我不确切知道在哪里放置这些代码,我必须根据我的情况进行修改:
require 'yaml'
require 'nokogiri'
yaml = "getOrderDetails:
Id: '114'
Name: 'XYZ'"
doc = YAML.load yaml
output = Nokogiri::XML::Builder.new do |xml|
xml.product{
xml.id doc["getOrderDetails"]["Id"]
xml.name doc["getOrderDetails"]["Name"]
}
end
puts output.to_xml
#=> <?xml version="1.0"?>
#=> <product>
#=> <id>114</id>
#=> <name>XYZ</name>
#=> </product>
如何编写init.rb文件以启动Ruby程序,该程序将打开有问题的YAML文件,从中读取,然后将其输出到XML?
我需要在我的lib文件夹中放置哪些其他Ruby文件来处理这个任务?
答案 0 :(得分:-1)
代码可以放在方便的地方。 Ruby没有真正期望的文件位置;你只是运行它们。您的开发团队可能有指导方针,因此您需要与他们交谈。
“init.rb”是文件的非描述性名称。尝试使用更能说明剧本目的的内容。
使用OpenURI:
可以轻松地为此目的阅读删除文件foo = open('http://domain.com/path/to/file.yaml').read
将返回文件的内容并将其存储在变量foo
中。
可以使用以下方法轻松解析YAML的内容:
yaml = YAML.load(foo)
此时haml
将包含一个数组或一个哈希值,然后可以正常访问。
更有趣的是,一旦加载了OpenURI,它将修补open
方法,应该可以执行以下操作:
require 'open-uri'
yaml = YAML.load_file('http://domain.com/path/to/file.yaml')
YAML必须打开一个要从磁盘加载的文件,这正是load_file
通常所做的,并且在OpenURI发挥其魔力后,YAML类应继承该魔法。我没有测试过,但它应该可以工作。
Nokogiri的Builder界面可能是个不错的选择。