Как запустить node.js и приложение Ruby через cron - PullRequest
0 голосов
/ 27 июня 2019

Я видел приложение для 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);
          });
        }
      });
    });
...