0
我设计了ruby中的代码,它通过电子表格和代码将我的xls部分转换为json。我需要将这个json上传到厨师服务器上的数据包中。我使用ruby代码的刀子命令并运行它。该JSON文件上传到我的本地厨师回购正确的,但对于转移到厨师服务器我收到此错误:从Ruby上传数据包时出错
ERROR: Chef::Exceptions::ValidationFailed: Data Bag Items must contain a Hash or Mash!
我已经验证了JSON,ID相匹配的文件名,并尝试使用[]括号在开始和结束,但不起作用。这是我的JSON的开始:
{ “ID”: “default_1”, “Sr.No”: “1”,...}
我的Ruby代码要领如下所示:
require 'spreadsheet'
book = Spreadsheet.open('BI.xls')
sheet1 = book.worksheet('Sheet1')
.
.
.
cmd1 = "cd #{current_dir}/chef-repo"
cmd2 = "knife data_bag create TestDB" #tried knife data bag too
cmd4 = "knife data_bag from file TestDB default_1.json" #tried knife data bag too
upload = %x[#{cmd1} && #{cmd2} && #{cmd4} ]
puts "#{upload}"
命令knife node list
正确显示节点。我是厨师和红宝石新手,搜索并尝试了很多东西,但没有工作。
此外,如果我从厨师回购中运行完全相同的命令,它可以正常工作并将json上传到数据包。 – user3264632 2015-01-21 09:35:09
可以肯定,你的json文件路径是'[/] chef-repo/data_bags/TestDB/default_1.json'吧? – Tensibai 2015-01-21 10:27:22
是的,代码文档和.xls存储在厨师回购 – user3264632 2015-01-22 05:31:11