Well, it took a little while (okay, okay, a long while), but this is changed in the most recent releases (2.0.0.rc2, 1.3.19). Sorry for the delay.
-- Pat On 01/02/2010, at 3:23 PM, Pat Allan wrote: > Right, thanks for that Steve. It all makes sense, really... > > I'll look at changing the sphinx_attributes method (and others) to be mixed > in constantly. > > -- > Pat > > On 29/01/2010, at 10:34 AM, Steve H wrote: > >> Marshal (correctly) won't dump anything with singleton methods. This >> is because things with singleton methods can't be properly "re- >> hydrated". Imagine if you dumped an object to JSON. If you wanted to >> get it back, you could create a new instance of that object, and >> assign all the values from the values in your JSON string. But if you >> have a special method that has been defined on an object, there's no >> way for Marshal to get that method back. So that's why it breaks. >> Take a look at this over-simplified example in IRB: >> >> irb(main):006:0> Marshal.dump Object.new >> => "\004\bo:\vObject\000" >> irb(main):007:0> o = Object.new >> => #<Object:0x10016b4e8> >> irb(main):008:0> def o.foo >> irb(main):009:1> p "foo" >> irb(main):010:1> end >> => nil >> irb(main):011:0> Marshal.dump o >> TypeError: singleton can't be dumped >> from (irb):11:in `dump' >> from (irb):11 >> from :0 >> >> >> -Steve >> >> On Jan 28, 1:23 am, Pat Allan <[email protected]> wrote: >>> Hi Steve >>> >>> The reason I add this on when I get search results back, is because >>> sphinx_attributes is useless at any other point, and I don't like the idea >>> of modifying *all* objects for something that only has use in a single >>> situation. >>> >>> Still, maybe it's worth it - it would make the code cleaner, and probably >>> speed up things when search results are populated. I would be interested in >>> trying to figure out why memcache doesn't like it - don't suppose you've >>> found out any of the finer details? >>> >>> Cheers >>> >>> -- >>> Pat >>> >>> On 28/01/2010, at 4:31 AM, Steve H wrote: >>> >>> >>> >>>> So... we rely on memcache heavily throughout our site, as I'm sure >>>> many other developers do as well. >>> >>>> Adding the sphinx_attributes as a singleton method on the specific >>>> object that is pulled back from the search causes memcache to break. >>> >>>> Frankly, my preferred solution is for the thinking_sphinx gem to re- >>>> open ActiveRecord (or at least re-open the indexed classes) and add an >>>> attr_accessor :sphinx_attributes >>> >>>> Currently what we're doing is taking some of the stuff out of >>>> sphinx_attributes and putting it into a custom search_results object >>>> (legacy stuff), then looking our object up again by id. >>> >>>> I think the fix I'm going to do (for now) is to remove the >>>> sphinx_attributes method from the object once we're done initializing >>>> our custom search_results object. But ideally, this wouldn't be >>>> necessary... >>> >>>> -Steve >>> >>>> -- >>>> You received this message because you are subscribed to the Google Groups >>>> "Thinking Sphinx" group. >>>> To post to this group, send email to [email protected]. >>>> To unsubscribe from this group, send email to >>>> [email protected]. >>>> For more options, visit this group >>>> athttp://groups.google.com/group/thinking-sphinx?hl=en. >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Thinking Sphinx" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/thinking-sphinx?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "Thinking Sphinx" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/thinking-sphinx?hl=en. > -- You received this message because you are subscribed to the Google Groups "Thinking Sphinx" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/thinking-sphinx?hl=en.
