Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3.2 斯芬克斯不访问局部索引的思考_Ruby On Rails 3.2_Thinking Sphinx - Fatal编程技术网

Ruby on rails 3.2 斯芬克斯不访问局部索引的思考

Ruby on rails 3.2 斯芬克斯不访问局部索引的思考,ruby-on-rails-3.2,thinking-sphinx,Ruby On Rails 3.2,Thinking Sphinx,带有thinking_sphinx 3.1.1的rails 3.2.18正在从开发模式过渡到生产模式。 在该过程中,当进行以下任何工作时: bundle exec rake ts:rebuild bundle exec rake ts:index bundle exec rake ts:stop bundle exec rake ts:start 搜索结果是 ActionView::Template::Error (unknown local index [...] 我最初意识到我在应用程序

带有thinking_sphinx 3.1.1的rails 3.2.18正在从开发模式过渡到生产模式。 在该过程中,当进行以下任何工作时:

bundle exec rake ts:rebuild
bundle exec rake ts:index
bundle exec rake ts:stop
bundle exec rake ts:start
搜索结果是

ActionView::Template::Error (unknown local index [...]
我最初意识到我在应用程序上运行了两个搜索pid,因为开发有一个
共享的
目录,sphinx标记和tmp/pid文件都放在这个目录中。这将继续进行,因此创建了两个PID:一个在共享文件夹中,另一个在应用程序版本的共享文件夹中。哼

仍然有一个
ps aux|grep searchd

/fna/shared/config/development.sphinx.conf
pids与共享文件夹中的不匹配,它们称为开发 另一个仍在开发中的应用程序(!)也有两个进程

1) 有两个流程正常吗?
2) 如何启动production.shpinx.conf的PID(并消除附带污染)

我意识到这也可能会受到capistrano部署的影响,并欢迎提出建议,以妥善处理问题

更新
ps ax | grep“searchd”

kill 99335

现在有两个PID用于适当的环境

shared/config/production.sphinx.conf
并重新部署。成功了。因此,剩下的疑问在于capistrano的部署。 假设索引是每晚运行的(并且可以接受),那么deploy.rb文件是否应该包括:

invoke_command "cd #{release_path} && RAILS_ENV=#{rails_env} bundle exec rake ts:rebuild"

您不需要在每次部署后运行
ts:rebuild
,就像
db:migrate
,只有在更改索引结构或添加/删除索引时才需要它。如果您只想更新索引中的数据,请使用
ts:index
任务(正如您已经经常做的那样)

确保所有生产Sphinx文件都在特定的发布目录之外是值得的——最好将它们放在共享目录或类似的目录中(而不是依赖于符号链接的文件)。如果已全部设置,则不需要在部署中运行TS任务

另外:Thinking Sphinx v3使用Sphinx的工作进程,因此始终至少有两个进程—一个是主进程,另一个等待第一次连接。如果有更多的并发连接,那么就会有更多的searchd进程

invoke_command "cd #{release_path} && RAILS_ENV=#{rails_env} bundle exec rake ts:rebuild"