调用rake作业:在控制台中运行rails后自动工作

时间:2015-01-30 05:45:15

标签: ruby-on-rails ruby delayed-job

我可以调用" rake jobs:work"运行" rails s"在控制台?

目前,在cmd中运行rails后我还将运行rake作业:在另一个控制台中工作,我想要发生的是在运行" rails s"工作:工作将自动开始。

2 个答案:

答案 0 :(得分:1)

正确的方法是使用流程管理器,例如InvokerForeman。链接上有大量文档,但归结为以下步骤:

  1. 安装软件
  2. 创建一个配置文件,您可以在其中声明要运行的进程。两者都支持Procfile样式声明。
  3. 使用命令行客户端启动进程管理器。
  4. 根据我的个人经验,我强烈推荐Invoker,它不仅仅是一个流程管理器,还包含一些更方便的功能,例如支持.dev本地域。

答案 1 :(得分:0)

你能做的就是:

rails server & rake jobs:work

它将作为后台作业运行rails server,您可以使用fg返回前台。你可以从两个进程混合中获得输出,这可能很烦人。

我不确定您的需求和期望是什么,但也许您可以使用screen(或tmux)并行运行它们并且能够在

您可以自动执行自己的.screenrc脚本运行服务器和任何其他命令。

有一个小问题,如果你从它运行服务器并关闭它(ctrl + c),那么你将松开它的屏幕窗口。幸运的是,也有一个解决方案(在SO上也是如此 - 你可以阅读更多关于它的信息here

所以,我为.run_screen使用了一些帮助脚本(别忘了chmod +x):

#!/bin/bash
/bin/bash -i <<<"$*; exec </dev/tty" 

.screenrc_rails文件:

#shell -${SHELL}
caption always "%n(%t) %= %{b}@%H[%l] : %{r}%c:%s"
termcapinfo xterm ti@:te@
termcap xterm 'AF=\E[3%dm:AB=\E[4%dm'
terminfo xterm 'AF=\E[3%p1%dm:AB=\E[4%p1%dm'
startup_message off

screen -t server 2 ${HOME}/.run_screen rails s
screen -t spork 3 ${HOME}/.run_screen bundle exec spork
screen -t dev_log 4 ${HOME}/.run_screen tail -f ./log/development.log
screen -t test_log 5 ${HOME}/.run_screen tail -f ./log/test.log
screen -t bash 0
screen -t bash 1 

.bash_profile定义的别名(屏幕 r (ails)):

alias screenr='screen -c ~/.screenrc_rails'

如果您不知道screen而不是ctrl+a"ctrl+a?会给你一些帮助。

我希望你会喜欢它。