2

sphinx デーモンを手動で開始するコマンドを認識しています。rake タスクを使用しています: "rake think_sphinx:start" Rails アプリケーションが読み込まれるたびに開始するようにして、毎回手動でコマンドを入力する必要がないようにすることはできますか?

4

7 に答える 7

3

capistrano 経由でデプロイする場合 (そうすべきです)、単純に after_deploy として追加します。

des "デプロイが成功するたびにこれを実行する"

  task :after_deploy, :roles => :app do
        run "#{current_path}/rake thinking_sphinx:start"
  end
于 2009-04-17T19:01:06.443 に答える
3

これを行うようにdaemon_controllerを構成できます:http://blog.phusion.nl/2008/08/25/daemon_controller-a-library-for-robust-daemon-management/

于 2009-04-17T19:20:47.037 に答える
2

実行中かどうかをテストし、レール内から起動できるはずです (バックティックまたは%x{...}表記法を使用)。

(コメントで言ったように)それがレーキタスクであることを考えると、バックティックの代わりにそのようにしたいかもしれません:

Rake::Task['thinking_sphinx:start'].invoke
于 2009-04-17T18:10:24.833 に答える
1

起動するコマンドを config/initializers/custom.rb に入れます

于 2009-04-17T18:17:40.510 に答える
0

この投稿はかなり古いですが、完全を期すためにソリューションを追加します...

次のコードを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アプリケーションをニーズに合わせて変更します。

于 2011-08-22T09:09:14.353 に答える
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

これは、スクリプト/サーバーを使用してサーバーを起動した場合に機能します。ただし、乗客から始めると機能しません:(

于 2009-06-08T21:51:00.863 に答える
0

私は自分のアプリで同じことをしなければなりませんでしたが、Windows を使っていました。あなたが同じ厄介な混乱に陥っている場合は、次のようなことをすると、人生がずっと楽になることがわかります。

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

古いコードを見ているのですが、do |fd| かどうか覚えていません。本当に必要でした。試してみます。

「開始」が重要な理由は、呪われたものをバックグラウンドで実行するようにウィンドウを設定するためです。ヤーグ!

于 2009-04-17T18:28:18.363 に答える