Domanda

Conosco il comando per avviare la sfinge demone manualmente.Io uso un task rake:"rake thinking_sphinx:start" e ' possibile farlo eseguire ogni volta che la mia applicazione rails carichi così non devo inserire manualmente il comando ogni volta?

È stato utile?

Soluzione

È possibile configurare daemon_controller per fare questo: http://blog.phusion.nl/2008/08/25/daemon_controller-a-library-for-robust-daemon-management/

Altri suggerimenti

Se si desidera distribuire via capistrano (come dovrebbe essere), è sufficiente aggiungere un after_deploy:

desc "Esegui questo dopo ogni distribuzione di successo"

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

Si dovrebbe essere in grado di verificare se è in esecuzione e di lanciare entro binari (utilizzando back-zecche o il %x{...} la notazione.

Dato che (come hai detto anche nei commenti) è un task rake puoi fare così invece che con le zecche:

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

Mettere il comando per lanciarlo in config/inizializzatori/custom.rb

Ho dovuto fare la stessa cosa nella mia app, ma con windows.Nel caso In cui siete nello stesso pasticcio appiccicoso, vi accorgerete che la vostra vita sarà molto più facile se fai una cosa del genere:

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

Sto guardando il vecchio codice non mi ricordo se do |fd| fosse davvero necessario.Dare un colpo.

Il motivo 'start' è importante, è con windows in mettendole in background maledetta cosa.Yargh!

Come accennato in precedenza, creare un file in config/inizializzatori.Per esempio, ho creato un file chiamato gli inizializzatori/start_thinking_sphinx.rb.E nel file che ho messo

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

Questo funziona se poi avviare il server con script/server.Tuttavia non funziona se inizio con passeggero :(

Anche se questo post è abbastanza vecchio, aggiungo la mia soluzione solo per completezza ...

Io inizio la sfinge demone senza l'utilizzo di rake, inserendo il codice riportato di seguito al file config/inizializzatori/launch_sphinx.rb.

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

Importante:

Modificare i percorsi searchd e la vostra applicazione rails per le tue esigenze.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top