使用delayed_job rake任务rails sphinx reindex

时间:2012-04-04 00:35:06

标签: ruby-on-rails rake sphinx thinking-sphinx

我在这个网站上找到了很多帖子,其他人给了我一些我需要的东西,但是我还没把它们拼凑起来。

对于搜索我使用思维sphinx gem在我的网站上运行sphinx。每次用户向网站添加新帖子时,我都需要重新编制索引。我已经在我的网站上运行delayed_job所以我想要做的是每次添加新帖子时,我想使用delayed_job异步重新索引。我想我需要使用handle_asynchronously命令并在我的模型中调用一个方法来运行rake任务来重新索引..但是我读到的某个地方说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

2 个答案:

答案 0 :(得分:1)

如果有人关注此事,我最后通过在post.rb方法中添加系统调用来解决此问题:

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

..然后每当我需要调用它时,我都会使用它:

Post.delay.reindexDB

知道如何正确地解决这个问题仍然会很好。

答案 1 :(得分:1)