Yeah. Do something like this to process each object that comes back:

results.each do |o|
class << o; self; end.send(:remove_method, :sphinx_attributes)send
(:remove_method, :excerpts)
end

Cheers

-Steve

On Feb 18, 2010, at 11:32 AM, Eric <[email protected]> wrote:

> Hey Guys-
>
> I'm running into the same issue.  Any updates on a fix?
>
> Thanks,
> Eric
>
> On Jan 31, 10:23 pm, Pat Allan <[email protected]> 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 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.

Reply via email to