我不想让斯芬克斯一直在我的开发机器上运行。当我通过netbeans运行应用程序时,我想要一种自动执行<code>rake thinking_sphinx的方法:启动</code>。有办法做到这一点吗
[同时-我正在使用Windows]
思考狮身人面像需要作为一个单独的过程运行。
我不想让斯芬克斯一直在我的开发机器上运行。当我通过netbeans运行应用程序时,我想要一种自动执行<code>rake thinking_sphinx的方法:启动</code>。有办法做到这一点吗
[同时-我正在使用Windows]
思考狮身人面像需要作为一个单独的过程运行。
您需要一个名为PsExec的第三方程序来完成此操作。否则,您将无法在Windows上使用Ruby启动后台进程。
首先下载PsExec此处。打开(至少)psexec.exe
并手动运行一次-您必须同意许可证:-/。
之后,在Rails应用程序的<code>script/server</code>中添加以下行:
system PATH_TO_PSEXEC/psexec -d rake.bat
现在您创建了<code>rake.bat</code>,其中包含要与服务器并行运行的命令。将包含以下内容的文件放入Rails应用程序的根目录中。
rake thinking_sphinx:start
这一行应该可以完成任务,但它可能会失败,例如,当NetBeans JRuby版本与主机上安装的Ruby不同时。或者根本没有安装Ruby。在这种情况下,您应该使用JRuby的完整路径调用rake:
"PATH_TO_NETBEANS/ruby2/jruby-1.2.0/bin/jruby" "PATH_TO_NETBEANS/ruby2/jruby-1.2.0/bin/rake" thinking_sphinx:start
现在启动服务器时,会弹出一个附加的Windows命令行,其中包含正在运行的rake任务。
不用说,您不应该将代码添加到生产服务器上的script/server
中。