我可以调用" rake jobs:work"运行" rails s"在控制台?
目前,在cmd中运行rails后我还将运行rake作业:在另一个控制台中工作,我想要发生的是在运行" rails s"工作:工作将自动开始。
答案 0 :(得分:1)
正确的方法是使用流程管理器,例如Invoker或Foreman。链接上有大量文档,但归结为以下步骤:
根据我的个人经验,我强烈推荐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
,?
会给你一些帮助。
我希望你会喜欢它。