Lukhnos d. Liu
2007-May-16 14:08 UTC
[Ferret-talk] How we got rid of a bus error when using acts_as_ferret
Hi, We have just started using acts_as_ferret, and everything worked well until we started running into some bus error. The message in mongrel.log looked like: ..../active_support/core_ext/module/inclusion.rb:4: [BUG] Bus Error We were running on OS X. The same thing happened on Linux, only that the message was "segmentation fault." That was no good. After some searching on the web, we found some a few mailing list threads that described the same situation, but didn''t come with any solution. Then we tried to zero in, first by removing the :analyzer part, and the bus error was gone. We started to suspect the analyzer that we were using: :analyzer => Ferret::Analysis::RegExpAnalyzer.new(FerretHelper::GENERIC_ANALYSIS_REGEX, true) Where GENERIC_ANALYSIS_REGEX is /([a-zA-Z]|[\xc0-\xdf][\x80-\xbf])+|[0-9]+|[\xe0-\xef][\x80-\xbf][\x80-\xbf]/ This is used, a la Jcode, to tokenize both European-language words, numbers, and CJV chars. Interestingly, we started to suspect if Mongrel''s development mode is the culprit. But anyway, we just created the Analyzer beforehand, and put it somewhere (say in some lib/helpers/), and now we have something like: acts_as_ferret({:fields => [...] }, { :analyzer => FerretHelper::GENERIC_ANALYZER }) And no more bus error / segmentation fault. We didn''t really understand why by sharing the analyzer things went better off. But I just hope by posting this episode it might help some people. Cheers, d. -- Posted via http://www.ruby-forum.com/.