嗨,我在设置 rake 任务以在 Amazon EC2 上的 ubuntu 实例启动/重新启动时运行时遇到了一些麻烦。
我需要让我的实例在启动新实例时启动一个简单的延迟作业“rake jobs:work”命令,而无需使用 ssh 登录并手动运行该命令。问题是 - 我无法让它执行命令。它在终端上运行良好,但在启动时无法自行运行。我已尝试按照 this link 中的说明进行操作,但似乎没有任何效果。
我在一个 Natty 11.04 实例上,我已经通过 rvm 安装了 ruby 和 gems。
最佳答案
您需要在 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
关于ruby-on-rails - 在 ubuntu 启动时运行 rake 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6207335/