Я видел приложение для node.js со встроенным Ruby.
Следующий код генерирует файл PDF, передавая значения из node.js в Ruby с использованием креветки геммы.Программа Node запускается на Centos.
Проблема заключается в том, что когда я запускаю программу вручную с правами root, используя:
sudo node server.js
Программа выполняется и работает правильно.Когда она выполняется командой cron
с помощью следующей команды, программа выполняется и работает правильно.Когда она выполняется как задача cron с помощью следующей команды
reboot cd /var/www/html/myapp/ && sudo node server.js
, часть Ruby не выполняется.Почему и как мне это решить?
Код Node.js:
var command = 'ruby report.rb "' + RagioneSociale + '" "' + NomeCantiere + '" "' + Note + '" "' + Nome + '" "' + Cognome + '" "' + Telefono + '" "' + Email + '" "' + Filiale + '" "' + NumeroRapporto + '" "' + Indirizzo + '" "' + Cap + '" "' + Citta + '" "' + Provincia + '" ';
...
//Genero il rapportino e ritorno il valore
result = await new Promise((resolve, reject) => {
exec(command, function (err, stdout, stderr) {
if (stderr) {
ManageError.SendError("Errore generazione PDF con ruby" + err);
reject(false);
} else if (stderr) {
ManageError.SendError("Errore generazione PDF con ruby" + err);
reject(false);
} else {
//Eliminazione del file temporaneo
fs.unlink(tempfilename, function (err) {
if (err) {
ManageError.SendError("Errore eliminazione file txt temporaneo" + err);
}
});
//Codifica PDF in Base64 rapportino
base64.encode('rapportino.pdf', function (err, base64String) {
resolve(base64String);
});
}
});
});