I realized that a commit link to my master branch isn't very useful
because I have merged other branches (related to my work).  I'm afraid
you would have to cherry pick(?), or I'm sure you know what's best.

Sorry again for the inconvenience Pat, and for being a neophyte with
git.
--
Minh

On Oct 17, 12:14 am, Minh Tran <[EMAIL PROTECTED]> wrote:
> Hey Pat,
>
> Many apologies-- in the patch I gave you, I meant to write
> ThinkingSphinx.deltas_enabled?  which is the accessor to the module
> variable; without it, you'll run into:
> NoMethodError: undefined method `deltas_enabled' for
> ThinkingSphinx:Module
>
> I've rectified the mistake in a commit to my fork and added an
> optional argument (reindex_after) that allows you to tweak whether a
> reindex happens after the block is excuted.  I've also added spec
> tests for suspended_delta, so I can assure you with better certainty
> that it works.  Grab as much as you will.
>
> Again, sorry for the bad patch; I'll only be submitting ones
> accompanied by spec tests from now on and via git to spare you
> trouble.
> --
> Minh
>
> P.S. commit is 
> athttp://github.com/tranminhh/thinking-sphinx/commit/dcb4fbf51429f9c884...
>
> On Oct 15, 9:03 pm, Pat Allan <[EMAIL PROTECTED]> wrote:
>
> > Hi Minh
>
> > Thanks for the code suggestions yet again! Just made the changes and  
> > pushed it out - it's all smart stuff. And credit where credit's due -  
> > James Healy was the one who wrote this feature, all I had to do was  
> > merge the change in.
>
> > Cheers
>
> > --
> > Pat
>
> > On 16/10/2008, at 5:00 AM, Minh Tran wrote:
>
> > > Hi Pat,
>
> > > I'm glad suspended_delta() is available in the master branch now; I've
> > > been monkey patching to get something like it for a while, so thank
> > > you!
>
> > > I looked at the source code, and it was simple and clean, but may I
> > > suggest some best practices?  I'll list each separately and provide my
> > > rationale.  Thank you ahead of time for your patience.  The original
> > > source code is pasted below for your convenience.
>
> > > ===
> > > def suspended_delta(&block)
> > > ThinkingSphinx.deltas_enabled = false
> > > yield
> > > ThinkingSphinx.deltas_enabled = true
> > > self.index_delta
> > > end
> > > ===
>
> > > First, I think we should wrap the yield in a begin/ensure block so
> > > that if there is an error, deltas will be re-enabled before the error
> > > gets passed up the stack.  This is potentially important because the
> > > error may be caught and handled intelligently (in a way that requires
> > > a re-index).
>
> > > Second, I think we shouldn't assume that deltas were enabled already;
> > > above, the suspended_delta() code *always* sets deltas_enabled to true
> > > rather than returns it to its previous value.  Eliminating this
> > > assumption doesn't make the code much more complex but will make the
> > > method more robust.
>
> > > If you find any of this agreeable, I included a patch at the end of
> > > this post.
>
> > > As always, Pat, thank you for your work on this!  Hope you are doing
> > > well =).
>
> > > Sincerely,
> > > Minh Tran
>
> > > =====
>
> > > --- a/lib/thinking_sphinx/active_record/delta.rb
> > > +++ b/lib/thinking_sphinx/active_record/delta.rb
> > > @@ -28,10 +28,14 @@ module ThinkingSphinx
> > >            #   end
> > >            #
> > >            def suspended_delta(&block)
> > > +              orig_deltas = ThinkingSphinx.deltas_enabled
> > >              ThinkingSphinx.deltas_enabled = false
> > > -              yield
> > > -              ThinkingSphinx.deltas_enabled = true
> > > -              self.index_delta
> > > +              begin
> > > +                yield
> > > +              ensure
> > > +                ThinkingSphinx.deltas_enabled = orig_deltas
> > > +                self.index_delta
> > > +              end
> > >            end
>
> > >            # Build the delta index for the related model. This won't
> > > be called
--~--~---------~--~----~------------~-------~--~----~
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