Ich habe eine Rake-Datei, die erfolgreich an der Befehlszeile ausgeführt werden kann. Wenn ich einen Cronjob zum Ausführen dieser Rake-Datei einstelle, schlägt die Zeile "require 'json'" fehl. Meine Vermutung ist, dass Cronjob eine andere env-Variable hat. Es funktioniert nicht, wenn ich "puts ENV" in das Ruby-Skript schreiben wollte. Ich frage mich also, was ich tun sollte, um die verschiedenen env-Variablen zu überprüfen und das Problem zu lösen. Vielen Dank.Rake nicht richtig in Cronjob
Antwort
tun Sie
require 'rubygems'
in Ihrem Skript haben? Z.B. irb
lädt Rubygems standardmäßig, während normal Ausführung erfordert explizite Import.
Ja, ich habe 'Rubygems' verlangt. Wenn ich auf der Kommandozeile rake, Rake date.rake, kein Problem. Fehler tritt nur bei Cronjob auf. – swingfuture
Erstens: require "json"
ist wahrscheinlich fehlgeschlagen, weil Rubygems nicht geladen ist. Sie können das wahrscheinlich beheben, indem Sie entweder require 'rubygems'
oben platzieren oder RUBYOPT=rubygems
an der Vorderseite der Befehlszeile des Cron-Auftrags oder an der Umgebung von Cron hinzufügen (Sie können normalerweise Umgebungsvariablen in der Crontab festlegen).
Um Ihre ENV
Debugging-Problem zu beantworten: ist es möglich, dass nicht funktioniert, weil Stdout irgendwo umgeleitet wird, wissen Sie nicht während des Cron-Job (es kann sicherlich nicht zu Ihrem Terminal gehen)? Sie könnten der folgenden stattdessen versuchen:
File.open('/tmp/debug_env', 'w') do |f|
f.puts ENV.to_hash.inspect
end
Und dann einen Blick in /tmp/debug_env
nehmen, um zu sehen, was da ist. Umgebungsvariablen, auf die besonders geachtet werden muss, sind $USER
, $GEM_HOME
, $GEM_PATH
, $RUBYOPT
.
Zuerst habe ich Rubygems geladen, zweitens habe ich versucht, Ihren Rat hinzufügen RUBYOPT = Rubygems an der Vorderseite von Cronjob, der gleiche Fehler. Ich werde das ENV-Debugging versuchen. – swingfuture
Es könnte sein, wie Sie es in Cron aufrufen. Hier ist, was für mich funktioniert:
cd /full/path/to/rails_root && /full/path/to/rake RAILS_ENV=production my:task
Eine andere Art und Weise, es zu tun: Schreiben Sie ein Wrapper-Skript von cron ausführen: erste Zeile - laden Sie Ihre .profile (oder .bash_profile etc.) zweite Zeile - führen Sie Ihre Rake-Skript
- 1. Cronjob läuft nicht php Dokument
- 2. Rake Fehler nicht Rake-Datei
- 3. AWS arbeitet nicht von Cronjob
- 4. Cronjob hinzugefügt, aber nicht funktioniert
- 5. cronjob in asp C#
- 6. in cronjob Verwendung in Wordpress
- 7. cronjob in codeigniter mit cpanel
- 8. Ein Cronjob In Windows Xampp
- 9. Cronjob führt Script nicht korrekt aus
- 10. Rake nicht Rails.application.secrets
- 11. Php erstellen cronjob über api Skript nicht
- 12. Amazon ami cronjob nicht zugreifen Mysql
- 13. Mehrere Cronjob-E-Mails
- 14. Rake Release funktioniert nicht
- 15. cronjob Ausführen einer PHP-Datei
- 16. Cronjob Speicher von Dateien
- 17. PHP ob_ * von Cronjob?
- 18. So verwenden Sie Cronjob
- 19. Cronjob oder MySQL Event?
- 20. Stündliche Cronjob unter Windows
- 21. Heroku laufen rake db: migrate Fehler Rake Befehl nicht gefunden
- 22. konnte nicht finden RubyGem Rake
- 23. Rake Vorschau nicht in Octopress Arbeits
- 24. Rake db: migrate funktioniert nicht
- 25. Rake läuft nicht Unit Tests
- 26. Problem läuft Kuchen Shell in Cronjob
- 27. Cronjob für den 1. Januar jedes Jahr
- 28. Git automatisch ziehen mit Cronjob
- 29. Fehler in Cronjob über SSH-Server
- 30. Wie man Cronjob in Cordova App hinzufügt
verwenden Sie RVM? – cbrulak