Ich habe eine Rails-Anwendung, die Resque für eine Jobwarteschlange verwendet. Die Resque Arbeiter-Klasse ist "JobDo" und ist in app/Arbeiter/job_do.rbJRuby-Anweisung in einem Bash-Skript mit Umgebungsvariablen
ich ein Skript (jobdo.sh) haben, die einen Job in die Warteschlange gestellt wird:
jruby -e 'load "/home/abc/myapp/app/workers/job_do.rb"; Resque.enqueue(JobDo, Time.now.utc)' >> /home/abc/logs/resque.log 2>&1
jedoch .. .Ich möchte in der Lage sein, dies in einer Rails-Umgebung auszuführen, die nicht dieselbe Log-Datei, denselben Benutzer oder dasselbe Rails-Anwendungsstammverzeichnis verwendet. Ich sehe etwas zu tun, wie folgt aus:
export $USER_HOME=/home/abc
export $LOGFILE=$USER_HOME/logs/resque.log
export $SERVER_HOME=/home/abc/myapp
jruby -e 'load "$SERVER_HOME/app/workers/job_do.rb"; Resque.enqueue(JobDo,Time.now.utc)' >> $LOGFILE 2>&1
Dies würde lassen jede $ USER_HOME Benutzer bearbeiten und $ server_home und den Code in ihrer Umgebung ausgeführt werden.
Dies funktioniert jedoch nicht, weil ich nicht herausfinden kann, wie die einfachen und doppelten Anführungszeichen zu verwenden, um die Umgebungsvariablen zu verwenden. Wie mache ich das?