rails sphinx reindex using a delayed_job rake task

Go To StackoverFlow.com

3

I've found a bunch of posts on this site and others which have given me tidbits of what I need but I've not been able to piece them together.

For search I'm running sphinx on my site using the thinking sphinx gem. I need to re-index each time a user adds a new post to the site. I'm already running delayed_job on my site so what I want to do is each time a new post is added, I want to re-index asynchronously using delayed_job. I think I need to be using the handle_asynchronously command and call a method in my model which will run the rake task to re-index..but somewhere I read says rake should not be run from code.

Bottom line, totally confused. Can someone advise how to go about this?

I could be totally off but this is what I'm thinking..

# 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
2012-04-04 00:35
by absolutskyy


1

In case someone was following this, I ended up resolving this by adding a system call in my post.rb method:

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

..and then whenever i need to call this, i use this:

Post.delay.reindexDB

Would still be nice knowing how to properly go about this.

2012-04-04 18:11
by absolutskyy


1

You doing it wrong. Use deltas for this - http://freelancing-god.github.com/ts/en/deltas.html

2012-04-17 18:02
by Yud