Hmm… curiouser and curiouser. In my rewrite of TS, I've not used FauxColumn, but instead am creating a Module on the fly (the given block is the module's definition) and extending the current instance with that. I've read that the performance is a little better, and it feels a little more elegant (never a fan of *_eval), albeit on the far side of metaprogramming.
https://github.com/freelancing-god/thinking-sphinx/blob/edge/lib/thinking_sphinx/active_record/interpreter.rb If you want to try something like that instead? I could try changing the internals of the master/rails3 branches, but given it's night time here it won't be until tomorrow at the earliest. -- Pat On 17/11/2011, at 9:50 PM, Ngan wrote: > It prints FauxColumn. > > Doesn't that mean that instance_eval has fallen through to method > missing? > Im going to try to isolate the blankslate issue today. Will let you > know. > > On Nov 17, 2:25 am, Pat Allan <[email protected]> wrote: >> It's actually Builder 2.1.2 or better that TS expects… so there shouldn't be >> a version conflict happening. >> >> So if instance_eval can't be revealed, then I guess it's not being removed >> by BlankSlate. Which then doesn't explain why things aren't working. >> >> Just to double-check - does this raise the expected error, or does it print >> out a FauxColumn: >> puts self.instance_eval >> >> -- >> Pat >> >> On 17/11/2011, at 1:06 AM, Ngan wrote: >> >> >> >> >> >> >> >>> Not sure if this helps, but I have confirmed that the BlankSlate being >>> used in TS is the one from Rails (which is builder-2.1.2 for my >>> version of Rails), instead of the builder-3.0 that is specified ini >>> the gemspec. >> >>> On Nov 16, 9:33 am, Ngan <[email protected]> wrote: >>>> Also, I'm on Rails 2.3.2, which I found includes its own version of >>>> builder and therefore BlankSlate. After doing some puts, I found that >>>> the blankslate builded with rails is the one that gets evaluated, and >>>> the one from thinking sphinx gem spec (builder 3.x) is not getting run >>>> at all. >> >>>> I'm using bundler. >> >>>> On Nov 16, 9:08 am, Ngan <[email protected]> wrote: >> >>>>> I've added that but then I just get this error: >>>>> Don't know how to reveal method 'instance_eval' >> >>>>> Just to confirm: >> >>>>> class Builder < BlankSlate >>>>> reveal :instance_eval >>>>> reveal :repond_to? >> >>>>> def self.generate(...) >>>>> ... >>>>> end >> >>>>> On Nov 16, 2:32 am, Pat Allan <[email protected]> wrote: >> >>>>>> Hmm, REE must behave differently with BlankSlate. I've certainly noticed >>>>>> different behaviours for Ruby 1.9 and Rubinius. >> >>>>>> Although keep in mind respond_to? is returning the FauxColumn in your >>>>>> example, it's not instance_eval itself. In your local copy of TS, can >>>>>> you add the following to the top of the Builder class: >>>>>> reveal :instance_eval >>>>>> reveal :respond_to? >> >>>>>> That'll unhide those methods. >> >>>>>> -- >>>>>> Pat >> >>>>>> On 16/11/2011, at 2:14 PM, Ngan wrote: >> >>>>>>> I've narrowed down the issue... >>>>>>> lib/thinking_sphinx/index/builder.rb >> >>>>>>> def initialzie >>>>>>> ... >>>>>>> self.instance_eval &block >>>>>>> ... >>>>>>> end >> >>>>>>> That call seems to not be working and/or doing nothing. >>>>>>> When I do: >> >>>>>>> puts "self.respond_to?(:instance_eval)", I get: >>>>>>> #<ThinkingSphinx::Index::FauxColumn:0x10f575778> >> >>>>>>> I'm on Ruby Enterprise1.8.7-2010.02 >> >>>>>>> This must be because of the BlankSlate/Builder changes? >> >>>>>>> On Nov 5, 1:25 am, Pat Allan <[email protected]> wrote: >>>>>>>> I don't suppose the stack trace holds any clues? >> >>>>>>>> -- >>>>>>>> Pat >> >>>>>>>> On 05/11/2011, at 12:10 AM, Ngan wrote: >> >>>>>>>>> I've removed all indexes from all models and left just one: >> >>>>>>>>> class Label < ActiveRecord::Base >>>>>>>>> define_index do >>>>>>>>> indexes :name >>>>>>>>> end >>>>>>>>> end >> >>>>>>>>> And it still errors. >> >>>>>>>>> On Nov 4, 2:36 pm, Ngan <[email protected]> wrote: >>>>>>>>>> Yea, i downgrade Riddle as well when going to 1.4.9 (it errors when >>>>>>>>>> you don't). >> >>>>>>>>>> Will check further >> >>>>>>>>>> On Nov 4, 2:07 pm, Pat Allan <[email protected]> wrote: >> >>>>>>>>>>> Can't think why that error would appear changing from 1.4.7 to >>>>>>>>>>> 1.4.10… >> >>>>>>>>>>> When you downgrade to 1.4.9, keep in mind you'll need to downgrade >>>>>>>>>>> Riddle as well (1.5.0 only works with1.4.10/2.0.10- all were >>>>>>>>>>> released earlier today). >> >>>>>>>>>>> Do any of your index definitions not have any fields? Are you doing >>>>>>>>>>> anything out of the ordinary with index definitions? >> >>>>>>>>>>> -- >>>>>>>>>>> Pat >> >>>>>>>>>>> On 04/11/2011, at 10:50 PM, Ngan wrote: >> >>>>>>>>>>>> I'm on Rails 2.3. Been running TS 1.4.7. Tried to upgrade to to >>>>>>>>>>>> TS >>>>>>>>>>>> 1.4.10, but got this error: >> >>>>>>>>>>>> $ rake ts:index --trace >>>>>>>>>>>> ... >>>>>>>>>>>> At least one field is necessary for an index >>>>>>>>>>>> ... >> >>>>>>>>>>>> I tried to upgrade to 1.4.9, and got the same error... >>>>>>>>>>>> What changed? >> >>>>>>>>>>>> -- >>>>>>>>>>>> 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 >>>>>>> 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.
