您好,我在设置一个rake任务时遇到了一些麻烦,该任务在Amazon EC2上启动/重启ubuntu实例时运行。
我需要让我的实例在启动新实例时启动一个简单的延迟作业“rake jobs:work”命令,而不必使用ssh登录,并手动运行命令。问题是 - 我无法让它执行命令。它可以在终端上正常工作,但在启动时不能自行工作。我试图按照this link中的说明进行操作,但似乎没有任何效果。
我在Natty 11.04实例上,我已经通过rvm安装了ruby和gem。
答案 0 :(得分:3)
你需要在一个看起来像这样的bash脚本中调用一些东西:
su - deploy -c "cd $RAILS_ROOT && rake RAILS_ENV=development jobs:work" >> $RAILS_ROOT/log/myjob.log 2>&1
然后从/etc/init.d/mystartup_filename中调用它。该文件可能类似于:
#! /bin/sh
RAILS_ROOT="/home/deploy/rails_root"
ENV="development"
case "$1" in
start)
echo -n "Starting my job: "
su - deploy -c "cd $RAILS_ROOT && rake RAILS_ENV=$ENV jobs:work" >> $RAILS_ROOT/log/myjob.log 2>&1
echo "done."
;;
stop)
echo -n "Stopping my job: "
su - deploy -c "cd $RAILS_ROOT && rake RAILS_ENV=$ENV jobs:stopwork" >> $RAILS_ROOT/log/myjob.log 2>&1
echo "done."
;;
*)
echo "Usage: $N {start|stop}" >&2
exit 1
;;
esac
exit 0