我有一个我用Nokogiri创建的哈希,我正在尝试从中生成一个JSON文件。我找到了
tempHash = {
"key_a" => "val_a",
"key_b" => "val_b"
}
File.open("public/temp.json","w") do |f|
f.write(tempHash.to_json)
end
问题是我一直收到错误
test.rb:43:in `initialize': No such file or directory - public/temp.json (Errno::ENOENT)
我的代码看起来像
def summary
listing_data = @nodes
listings = listing_data.css('div.unsponsored div.item.compact.listing')
listing_hashes = listings.map do |x|
type = "#{@type}"
address = x.css('div.body h3 a').text
unit = x.css('div.body h3 a').text.gsub!(/.*?(?=#)/im, "")
url = x.css('div.item_inner div.body h3 a').text
price = x.css('h3 span').text
{
:type => type,
:address => address,
:unit => unit,
:url => url,
:price => price,
}
end
File.open("public/temp.json","w") do |f|
f.write(JSON.pretty_generate(listing_hashes))
end
end
谢谢!
答案 0 :(得分:1)
您可能没有创建该文件夹。带有File.open
选项的w
将创建一个文件(如果该文件不存在),但它不能创建缺少的目录。
如果您无法手动创建,则可以使用此代码创建文件夹
Dir.mkdir('public') unless File.exists?('public')
File.open("public/temp.json","w") do |f|
f.write(JSON.pretty_generate(listing_hashes))
end
答案 1 :(得分:0)
错误非常明显:"No such file or directory - public/temp.json"
在这种情况下,它可能是不存在的目录,因为您为mode参数指定了'w'
。如果文件不存在,则指定'w'
将创建该文件,但不会创建该目录。
尝试自己创建public
目录,然后再次运行代码。