2

我知道手动启动 sphinx 守护进程的命令。我使用 rake 任务:“rake thinking_sphinx:start” 是否可以在我的 rails 应用程序加载时启动它,这样我就不必每次都手动输入命令?

4

7 回答 7

3

如果您通过 capistrano 进行部署(您应该这样做),只需将其添加为 after_deploy:

desc "每次成功部署后运行它"

  task :after_deploy, :roles => :app do
        run "#{current_path}/rake thinking_sphinx:start"
  end
于 2009-04-17T19:01:06.443 回答
3

您可以配置 daemon_controller 来执行此操作:http: //blog.phusion.nl/2008/08/25/daemon_controller-a-library-for-robust-daemon-management/

于 2009-04-17T19:20:47.037 回答
2

您应该能够测试它是否正在运行并从 Rails 内启动它(使用反引号%x{...}符号。

鉴于(正如您在评论中所说)这是一项 rake 任务,您可能希望这样做而不是使用反引号:

Rake::Task['thinking_sphinx:start'].invoke
于 2009-04-17T18:10:24.833 回答
1

将启动它的命令放入您的 config/initializers/custom.rb

于 2009-04-17T18:17:40.510 回答
0

我不得不在我的应用程序中做同样的事情,但使用 Windows。如果您陷入同样的​​困境,您会发现如果您执行以下操作,您的生活会轻松得多:

if app_not_already_running
  IO.popen("start app") do |fd|
  end
end

我正在查看旧代码,但我不记得 do |fd| 真的很有必要。试一试。

“开始”很重要的原因是让窗口成为​​被诅咒的东西的背景。啊!

于 2009-04-17T18:28:18.363 回答
0

如上所述,在 config/initializers.xml 中创建一个文件。例如,我创建了一个名为 initializers/start_thinking_sphinx.rb 的文件。在我放的文件中

require 'rake'
require 'rake/testtask'
require 'rake/rdoctask'
require 'tasks/rails'
require "#{RAILS_ROOT}/vendor/plugins/thinking-sphinx/tasks/thinking_sphinx_tasks"
Rake::Task['thinking_sphinx:start'].invoke

如果我随后使用脚本/服务器启动服务器,这将有效。但是,如果我从乘客开始 :(

于 2009-06-08T21:51:00.863 回答
0

虽然这篇文章已经很老了,但为了完整起见,我添加了我的解决方案......

我在不使用 rake 的情况下启动 sphinx 守护程序,方法是将以下代码放入 config/initializers/launch_sphinx.rb。

Kernel.system("/usr/local/sphinx/bin/searchd --pidfile --config [full-path-to-your-app]/config/#{RAILS_ENV}.sphinx.config")

重要

根据需要更改 searchd 和 rails 应用程序的路径。

于 2011-08-22T09:09:14.353 回答