sphinx デーモンを手動で開始するコマンドを認識しています。rake タスクを使用しています: "rake think_sphinx:start" Rails アプリケーションが読み込まれるたびに開始するようにして、毎回手動でコマンドを入力する必要がないようにすることはできますか?
7 に答える
capistrano 経由でデプロイする場合 (そうすべきです)、単純に after_deploy として追加します。
des "デプロイが成功するたびにこれを実行する"
task :after_deploy, :roles => :app do
run "#{current_path}/rake thinking_sphinx:start"
end
これを行うようにdaemon_controllerを構成できます:http://blog.phusion.nl/2008/08/25/daemon_controller-a-library-for-robust-daemon-management/
実行中かどうかをテストし、レール内から起動できるはずです (バックティックまたは%x{...}
表記法を使用)。
(コメントで言ったように)それがレーキタスクであることを考えると、バックティックの代わりにそのようにしたいかもしれません:
Rake::Task['thinking_sphinx:start'].invoke
起動するコマンドを config/initializers/custom.rb に入れます
この投稿はかなり古いですが、完全を期すためにソリューションを追加します...
次のコードをconfig/initializers / launch_sphinx.rbに配置して、rakeを使用せずにsphinxデーモンを起動します。
Kernel.system("/usr/local/sphinx/bin/searchd --pidfile --config [full-path-to-your-app]/config/#{RAILS_ENV}.sphinx.config")
重要:
検索へのパスとRailsアプリケーションをニーズに合わせて変更します。
上記のように、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
これは、スクリプト/サーバーを使用してサーバーを起動した場合に機能します。ただし、乗客から始めると機能しません:(
私は自分のアプリで同じことをしなければなりませんでしたが、Windows を使っていました。あなたが同じ厄介な混乱に陥っている場合は、次のようなことをすると、人生がずっと楽になることがわかります。
if app_not_already_running
IO.popen("start app") do |fd|
end
end
古いコードを見ているのですが、do |fd| かどうか覚えていません。本当に必要でした。試してみます。
「開始」が重要な理由は、呪われたものをバックグラウンドで実行するようにウィンドウを設定するためです。ヤーグ!