最可能的是,你需要括号为您Dir.glob
方法,它采取只是第一个参数传递,剩下的,是被视为FileUtils.cp_r
说法,尝试用:
FileUtils.cp_r(
Dir.glob(
"#{node['default']['home']}/standalone/deployments/'*.ear'",
"#{node['default']['default_backup_path']}/oms_bkp_#{time}"
),
'destination/',
noop: true,
verbose: true
)
您正在向glob
方法传递两个patterns
参数,这就是错误的原因:
no implicit conversion of String into Integer (TypeError)
尽量只使用cp_r
每个模式,如:
FileUtils.cp_r(
Dir.glob("#{node['default']['home']}/standalone/deployments/'*.ear'"),
'destination/',
noop: true,
verbose: true
)
FileUtils.cp_r(
Dir.glob("#{node['default']['default_backup_path']}/oms_bkp_#{time}"),
'destination/',
noop: true,
verbose: true
)
,我认为你的目标是迭代获得元素
"#{node['default']['home']}/standalone/deployments/'*.ear'"
"#{node['default']['default_backup_path']}/oms_bkp_#{time}"
所以你可以迭代这两个目录,并在t中使用这个模式他Dir.glob
方法,如:
patterns = [
"#{node['default']['home']}/standalone/deployments/'*.ear'",
"#{node['default']['default_backup_path']}/oms_bkp_#{time}"
]
patterns.each do |pattern|
FileUtils.cp_r Dir.glob(pattern), 'destination/', noop: true, verbose: true
end
凡'destination/'
是其中的元素将被复制,那你缺少的文件夹。
或者你要使用的default_backup_path
文件夹作为目标的话,那么你不需要Dir.glob
方法,只需将其添加为dest
参数,为字符串
FileUtils.cp_r(
Dir.glob("#{node['default']['home']}/standalone/deployments/'*.ear'"),
"#{node['default']['default_backup_path']}/oms_bkp_#{time}",
noop: true,
verbose: true
)
谢谢你的忠告。我试过这个,它给了我一个错误,说:“有一个错误:TypeError:没有将字符串隐式转换为整数” – kkrrss
所以,错误已经改变了,是不是它指向哪一行给出错误? –
是的。但它的行号相同。我是Ruby新手。所以一点点努力与此。 – kkrrss