我知道手动启动sphinx守护程序的命令。我使用rake任务:“rake thinking_sphinx:start”每当我的rails应用程序加载时它是否可以启动它所以我不必每次都手动输入命令?
答案 0 :(得分:3)
如果你通过capistrano部署(你应该这样做),只需将其添加为after_deploy:
desc“在每次成功部署后运行此”
task :after_deploy, :roles => :app do
run "#{current_path}/rake thinking_sphinx:start"
end
答案 1 :(得分:3)
您可以配置daemon_controller来执行此操作:http://blog.phusion.nl/2008/08/25/daemon_controller-a-library-for-robust-daemon-management/
答案 2 :(得分:2)
您应该能够测试它是否正在运行并从rails中启动它(使用back-ticks或%x{...}
表示法。
鉴于(正如你在评论中所说的那样)这是一个rake任务,你可能想要这样做,而不是使用反向标记:
Rake::Task['thinking_sphinx:start'].invoke
答案 3 :(得分:1)
将命令放入config / initializers / custom.rb
中启动它答案 4 :(得分:0)
我必须在我的应用程序中执行相同的操作,但使用Windows。如果你遇到同样的问题,你会发现,如果你做了类似的事情,你的生活会更容易:
if app_not_already_running
IO.popen("start app") do |fd|
end
end
我正在查看旧代码,我不记得是否执行了| fd |真的很有必要。试一试。
'开始'很重要的原因是让窗户成为背景被诅咒的东西。 Yargh!
答案 5 :(得分:0)
如上所述,在config / initializers中创建一个文件。例如,我创建了一个名为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
如果我随后使用脚本/服务器启动服务器,则此方法有效。但是,如果我从乘客开始不起作用:(
答案 6 :(得分:0)
虽然这篇文章很老,但为了完整起见,我添加了我的解决方案......
我通过将以下代码添加到config / initializers / launch_sphinx.rb来启动sphinx守护程序而不使用rake。
Kernel.system("/usr/local/sphinx/bin/searchd --pidfile --config [full-path-to-your-app]/config/#{RAILS_ENV}.sphinx.config")
重要强>:
根据您的需要更改searchd和rails应用程序的路径。