Bǎi sī bù jiě

 

Programming for fun?


I've been working on the cookbook application for the wife and couple interesting things.

I use Dreamhost, and while they rock in alot of ways they won't let me have any long running processes. I wanted to add full text search to my cookbook (because if you can't find the recipe you want, what good is a cookbook) and I couldn't use the likes of Sphinx or Ferret. But if I changed my DB to MySQL (which dreamhost does provide) I can use the built in fulltext search. It is a little hackish, and MySQL specific but it works and is plenty fast for my needs.

I had to do two things:
1) Add a FULLTEXT index to my migration

def self.up
...
execute 'ALTER TABLE recipes ENGINE = MyISAM'
execute 'CREATE FULLTEXT INDEX ft_idx_recipes ON recipes(title,ingredients,directions)'
end
def self.down
execute 'ALTER TABLE recipes DROP INDEX ft_idx_recipes'
execute 'ALTER TABLE recipes ENGINE = InnoDB'
drop_table :recipes
end

2) In my recipes controller in the search action I have the following line

@recipes = Recipe.find_by_sql("SELECT * FROM recipes WHERE MATCH (title, ingredients, directions) AGAINST ('#{query.gsub(/'/, "''")}');")

The gsub bit is to sanitize the sql. Pretty simple really, and if I ever want to replace it all I need to do is modify the controller.



I found out today that the Bort guys added OpenID support to the project. Which would normally involve some obscure svn/patch hijinks to deal with, but thanks to git I can just grab their changes (I did fork my project from theirs to start with).


git branch openid # incase I screw things up
git checkout openid # use the new branch
git pull git://github.com/fudgestudios/bort.git master
# Fix any conflicts and merge back to master


Finally, did everyone know you can put alias in the .gitconfig file? Well, you never told me.


[alias]
co = checkout
ci = commit
st = status

Labels:


Comments: Post a Comment

100 contemplate no solve.

Personal

Projects

Blog Archives

Twitter

del.icio.us


    Warning: main(/home/sexton/magpierss/rss_fetch.inc) [function.main]: failed to open stream: No such file or directory in /home/.jalapeno/sexton/fuzzymonk.com/2008/10/programming-for-fun.php on line 303

    Fatal error: main() [function.require]: Failed opening required '/home/sexton/magpierss/rss_fetch.inc' (include_path='.:/usr/local/lib/php') in /home/.jalapeno/sexton/fuzzymonk.com/2008/10/programming-for-fun.php on line 303