Questo è il mio pezzo di Ruby in una ricetta Chef:Verificare la directory esistente non riesce in Ruby + Chef
# if datadir doesn't exist, move over the default one
if !File.exist?("/vol/postgres/data")
execute "mv /var/lib/postgresql/9.1/main /vol/postgres/data"
end
Il risultato è:
Executing mv /var/lib/postgresql/9.1/main /vol/postgres/data
mv: inter-device move failed: `/var/lib/postgresql/9.1/main' to `/vol/postgres/data/main'; unable to remove target: Is a directory
So che /vol/postgres/data
esiste ed è una directory , tuttavia tenta ancora di eseguire il mv
. Perché?
Giusto per essere sicuri, eseguendo il seguente script di Ruby standalone sulle stesse uscite della macchina "nomv":
if !File.exist?("/vol/postgres/data")
print "mv"
else
print "nomv"
end
Hmm ... Se è Chef, prova '! :: File.exist? ...'. Può essere miscelato con Chef :: Provider :: File. –
@DracoAter Speravo fosse, ma ci ho provato, e sfortunatamente non fa differenza. –