1

Usermodel は、 を使用して検索するインデックスを定義していますThinkingSphinx。ただし、デーモンを停止するときにsearchd、メソッドが正常に失敗し、エラーがスローされないようにしたいと考えています。通常、例外をキャッチするためのレスキュー ブロックを使用してこれを行います。ただし、この場合、それでもエラーがスローされ、putsステートメントは実行されません。

def search_users(key)
  begin
    search_results =  User.search(key,options)
  rescue Exception
    puts "Hello World!!!"
    search_results = []
  end
  return search_results
end

以下は私が得るエラーです:

Riddle::ConnectionError (Connection to 127.0.0.1 on 3201 failed. Connection refused - connect(2)):

抜け道はありますか?

4

2 に答える 2

2

解決しました。

検索呼び出しに :populate => true オプションを追加します。

通常、Thinking Sphinx は検索結果を遅延ロードします (sphinx スコープなどを許可します) - しかし、レスキューを有効にしたい場合は、結果を強制的にすぐにロードする必要があります - したがって、:populate オプションを使用します。

詳細については、上記のリンクを参照してください。

于 2012-12-29T05:04:49.473 に答える
1

ruby の return セマンティクスを考えると、コードを圧縮できます。

def search_users(key)
  begin
    User.search(key,options)
  rescue
    puts "Hello World!!!"
    []
  end
end

助けるのは悪いException。を使用するだけでrescueStandardError必要なもののほとんどをキャプチャします。そうしないと、意図しないSyntaxErrorLoadError、およびその他のものもキャプチャされます。SystemExitこの場合、rescue Riddle::ConnectionErrorは適切ですが、必須ではありません。

于 2012-12-29T05:31:51.053 に答える