2012-04-04 3 views
3

Я нашел кучу сообщений на этом сайте и других, которые дали мне лакомые кусочки того, что мне нужно, но я не смог их собрать.rails sphinx reindex с помощью задачи rake с задержкой_job

Для поиска Я использую sphinx на своем сайте, используя драгоценный камень сфинкса. Мне нужно переиндексировать каждый раз, когда пользователь добавляет новое сообщение на сайт. Я уже запускал delayed_job на своем сайте, поэтому каждый раз, когда добавляется новое сообщение, я хочу повторно индексировать асинхронно, используя delayed_job. Я думаю, что мне нужно использовать команду handle_asynchronously и вызвать метод в моей модели, который будет запускать задачу rake, чтобы повторно проиндексировать ... но где-то я читаю, что грабли не должны запускаться из кода.

Нижняя линия, полностью смущенная. Может ли кто-нибудь посоветовать, как это сделать?

я мог быть полностью выключен, но это то, что я имею в виду ..

# in post.rb 
def reindex_database 
    # run rake task 
end 

# in posts_controller.rb 
def add_post 
    # add_post logic 
    handle_asynchronously Post.reindex_database 
end 

ответ

1

В случае кто-то после этого, я в конечном итоге решения путем добавления системного вызова в моем методе post.rb:

# in post.rb 
def reindexDB 
    `rake thinking_sphinx:rebuild` 
end 

..и тогда, когда мне нужно, чтобы назвать это, я использую это:

Post.delay.reindexDB 

бы еще неплохо знать как правильно идти об этом.

Смежные вопросы