在ubuntu启动时运行rake任务

时间:2011-06-01 20:37:19

标签: ruby-on-rails ubuntu amazon-ec2 rake

您好,我在设置一个rake任务时遇到了一些麻烦,该任务在Amazon EC2上启动/重启ubuntu实例时运行。

我需要让我的实例在启动新实例时启动一个简单的延迟作业“rake jobs:work”命令,而不必使用ssh登录,并手动运行命令。问题是 - 我无法让它执行命令。它可以在终端上正常工作,但在启动时不能自行工作。我试图按照this link中的说明进行操作,但似乎没有任何效果。

我在Natty 11.04实例上,我已经通过rvm安装了ruby和gem。

1 个答案:

答案 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