Как мне автоматически запустить Daemon Sphinx, когда загружается приложение Rails?

StackOverflow https://stackoverflow.com/questions/761547

Вопрос

Я знаю о команде запустить Daemon Daemon Sphinx вручную. Я использую задачу грабли: «Grable Thinking_sphinx: Start». Можно ли запускать его, когда мое приложение Rails загружается, поэтому мне не нужно вручную вводить команду каждый раз?

Это было полезно?

Решение

Вы можете настроить daemon_controller, чтобы сделать это: http://blog.phusion.nl/2008/08/25/daemon_controller-a-library-for-robust-daemon-management/

Другие советы

Если вы развертываете через Capistrano (и вы должны быть), просто добавьте его в качестве After_deploy:

desc "запустите это после каждого успешного развертывания"

  task :after_deploy, :roles => :app do
        run "#{current_path}/rake thinking_sphinx:start"
  end

Вы должны быть в состоянии проверить, работает ли он, и запустить его из рельсов (используя Задняя часть или %x{...} обозначение.

Учитывая, что (как вы сказали в комментариях), это задача граблей, вы можете сделать это так, как и с обратными газами:

Rake::Task['thinking_sphinx:start'].invoke

Поместите команду, чтобы запустить ее в вашем конфигурации/инициализаторах/custom.rb

Мне пришлось сделать то же самое в своем приложении, но с Windows. Если вы находитесь в том же липком беспорядке, вы обнаружите, что ваша жизнь будет намного проще, если вы сделаете что -то вроде:

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

Я смотрю на старый код и не помню, если это | fd | был действительно необходим. Дать ему шанс.

Причина, по которой «старт» важна, заключается в том, чтобы уволить окна в фоновую проклятую вещь. Ярг!

Как упомянуто выше, создайте файл в конфигурации/инициализаторах. Например, я создал файл с именем initializers/start_thing_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

Это работает, если я запускаю сервер с Script/Server. Однако не работает, если я начну с пассажира :(

Хотя этот пост довольно старый, я добавляю свое решение только ради полноты ...

Я запускаю Daemon 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 на ваши потребности.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top