Das "whenever Event"
Das einzige, was sich bei dem, was whenever umschließt (z. B. cron), im Vergleich zu Ihrem regulären Spezifikationslauf ändert, ist die Systemumgebung und genauer gesagt die Umgebungsvariablen.
Sie können die Befehle sehen, die whenever in cron installieren wird, indem Sie sein ausführbares Programm verwenden :
$ whenever
Cron startet immer mit einer Rohumgebung. Wenn Sie den Inhalt Ihrer Crontab überprüfen (mit crontab -e
), sehen Sie oben Variablen, die gesetzt sind. Sie können dort zusätzliche Variablen setzen. Zum Beispiel :
SHELL="/bin/bash"
PATH="/sbin:/bin:/usr/sbin:/usr/bin"
MAILTO="Ihr_Benutzer"
HOME="/home/Ihr_Benutzer"
RAILS_ENV="Produktion"
Sie sollten diese jedoch nicht benötigen, weil whenever einen cleveren Trick verwendet: Es ruft alle Befehle mit /bin/bash -l -c
auf. Dies stellt sicher, dass es eine Anmeldeshell verwendet, die die Datei ~/.bashrc
lädt. Daher sind alle Variablen, die in Ihrer Bashrc-Datei exportiert sind, innerhalb des Cron-Job-Ausführung zugänglich.
Beachten Sie auch, dass einige Distributionen (wie Gentoo) in der Skel-Bashrc-Datei einen Check haben, der beendet, wenn die Shell nicht interaktiv ist (daher müssen Sie Ihre Umgebungsvariablen einstellen, bevor Sie sie benötigen, wenn sie in cron benötigt werden).
Tests mit ähnlicher Umgebung
Um auf Tests zu antworten, ist dies wahrscheinlich keine gute Idee. Es gibt nichts, was mit Ihrer Codebasis zusammenhängt, sondern nur mit Ihrem System (ähnlich testen Sie nicht, welche Version von PostgreSQL oder ImageMagick auf Ihrem System installiert ist, in Ihren Spezifikationen).
Sie können zum Zweck des Debuggens irgendwie simulieren, was in cron passiert, während Sie rspec aufrufen, indem Sie Folgendes tun :
env - HOME=/home/Ihr_Benutzer/ /bin/bash -l -c 'rspec spec/'
Dies stellt sicher, dass die Umgebung geleert wird (env -
), dann HOME als minimale Umgebung gesetzt wird und dann eine Anmeldeshell genau wie die Befehle von whenever aufgerufen werden.