Hi Pat, just wanted to say thanks for your help over the Christmas period. I
ended up caving and delegating the search out to the Google AJAX Api which
works very well provided the content you're indexing is on the public
internet :) Fortunately that was our use case. I managed to mod TS to the
point where it worked with multiple sites (i.e. bitshifting the ID to allow
for the insertion of an entity ID also). I came unstuck again when half of
my polymorphic association wasn't being saved with I enabled TS in the
model. I just thought I'd let you know the bug still exists but I'm not sure
where to start to find it. It could be very specific to my setup though :)

Thanks again! And I'll keep an eye on TS for the future :D

Cheers,

Brendon



On Fri, Jan 15, 2010 at 12:59 PM, Pat Allan <p...@freelancing-gods.com>wrote:

> Hi Brendon
>
> It actually seems to be failing because updated_at is nil - which is odd,
> because it should be set automatically in Rails. Granted, this isn't ideal,
> because people might use columns other than updated_at, so this should be
> fixed, but would you be able to confirm my guess of the situation?
>
> Cheers
>
> --
> Pat
>
> On 13/01/2010, at 4:51 PM, Spike wrote:
>
> > Hi everyone, I've come across an unusual problem, I have many models
> > (Pages, Links etc...) that are associated with a central class called
> > ComponentInstance. It's a polymorphic association.
> >
> > To delete one of these elements from the system I call destroy on the
> > component_instance which then is set (Through the association) to
> > delete the instance (the page or link etc...). This works well, but
> > even since I added delta indexing (on the timestamp) things break.
> > Rails will delete the page but halt at the component instance. It
> > seems that it's trying to update the delta and fails because half of
> > the association is missing. I've tried suspended_delta and even
> > suspended_delta(false) but no luck there. Here's the error and trace:
> > The indexes code is at the bottom:
> >
> > undefined method `>' for nil:NilClass
> >
> > /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/
> > whiny_nil.rb:52:in `method_missing'
> > /Library/Ruby/Gems/1.8/gems/ts-datetime-delta-1.0.2/lib/
> > thinking_sphinx/deltas/datetime_delta.rb:93:in `toggled'
> > /Users/brendon/.gem/ruby/1.8/gems/thinking-sphinx-1.3.14/lib/
> > thinking_sphinx/active_record/delta.rb:28:in `toggled_delta?'
> > /Users/brendon/.gem/ruby/1.8/gems/thinking-sphinx-1.3.14/lib/
> > thinking_sphinx/active_record.rb:342:in `toggle_deleted'
> > /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/
> > callbacks.rb:178:in `send'
> > /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/
> > callbacks.rb:178:in `evaluate_method'
> > /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/
> > callbacks.rb:166:in `call'
> > /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/
> > callbacks.rb:93:in `run'
> > /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/
> > callbacks.rb:92:in `each'
> > /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/
> > callbacks.rb:92:in `send'
> > /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/
> > callbacks.rb:92:in `run'
> > /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/
> > callbacks.rb:276:in `run_callbacks'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > callbacks.rb:344:in `callback'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > callbacks.rb:338:in `destroy_without_transactions'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > transactions.rb:229:in `send'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > transactions.rb:229:in `with_transaction_returning_status'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > connection_adapters/abstract/database_statements.rb:136:in
> > `transaction'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > transactions.rb:182:in `transaction'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > transactions.rb:228:in `with_transaction_returning_status'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > transactions.rb:192:in `destroy'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > associations/association_proxy.rb:217:in `send'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > associations/association_proxy.rb:217:in `method_missing'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > associations.rb:1495:in `belongs_to_dependent_destroy_for_instance'
> > /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/
> > callbacks.rb:178:in `send'
> > /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/
> > callbacks.rb:178:in `evaluate_method'
> > /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/
> > callbacks.rb:166:in `call'
> > /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/
> > callbacks.rb:93:in `run'
> > /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/
> > callbacks.rb:92:in `each'
> > /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/
> > callbacks.rb:92:in `send'
> > /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/
> > callbacks.rb:92:in `run'
> > /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/
> > callbacks.rb:276:in `run_callbacks'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > callbacks.rb:344:in `callback'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > callbacks.rb:338:in `destroy_without_transactions'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > transactions.rb:229:in `send'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > transactions.rb:229:in `with_transaction_returning_status'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > connection_adapters/abstract/database_statements.rb:136:in
> > `transaction'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > transactions.rb:182:in `transaction'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > transactions.rb:228:in `with_transaction_returning_status'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > transactions.rb:192:in `destroy'
> > /Users/brendon/Projects/SpikeAtSchool/app/controllers/
> > component_instances_controller.rb:165:in `destroy'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > base.rb:1331:in `send'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > base.rb:1331:in `perform_action_without_filters'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > filters.rb:617:in `call_filters'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > filters.rb:610:in `perform_action_without_benchmark'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > benchmarking.rb:68:in `perform_action_without_rescue'
> > /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/
> > core_ext/benchmark.rb:17:in `ms'
> > /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/
> > 1.8/benchmark.rb:308:in `realtime'
> > /Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/
> > core_ext/benchmark.rb:17:in `ms'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > benchmarking.rb:68:in `perform_action_without_rescue'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > rescue.rb:160:in `perform_action_without_flash'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > flash.rb:146:in `perform_action'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > base.rb:532:in `send'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > base.rb:532:in `process_without_filters'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > filters.rb:606:in `process'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > base.rb:391:in `process'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > base.rb:386:in `call'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > routing/route_set.rb:437:in `call'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > dispatcher.rb:87:in `dispatch'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > dispatcher.rb:121:in `_call'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > dispatcher.rb:130:in `build_middleware_stack'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > string_coercion.rb:25:in `call'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > string_coercion.rb:25:in `call'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/
> > rack/head.rb:9:in `call'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/
> > rack/methodoverride.rb:24:in `call'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > params_parser.rb:15:in `call'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > session/abstract_store.rb:122:in `call'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > query_cache.rb:29:in `call'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > connection_adapters/abstract/query_cache.rb:34:in `cache'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > query_cache.rb:9:in `cache'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > query_cache.rb:28:in `call'
> > /Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/
> > connection_adapters/abstract/connection_pool.rb:361:in `call'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > failsafe.rb:26:in `call'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/
> > rack/lock.rb:11:in `call'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/
> > rack/lock.rb:11:in `synchronize'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/vendor/rack-1.0.0-git/lib/
> > rack/lock.rb:11:in `call'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > dispatcher.rb:114:in `call'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > reloader.rb:34:in `run'
> > /Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/
> > dispatcher.rb:108:in `call'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/rack/
> > request_handler.rb:95:in `process_request'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > abstract_request_handler.rb:207:in `main_loop'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > railz/application_spawner.rb:378:in `start_request_handler'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > railz/application_spawner.rb:336:in `handle_spawn_application'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > utils.rb:183:in `safe_fork'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > railz/application_spawner.rb:334:in `handle_spawn_application'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > abstract_server.rb:352:in `__send__'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > abstract_server.rb:352:in `main_loop'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > abstract_server.rb:196:in `start_synchronously'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > abstract_server.rb:163:in `start'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > railz/application_spawner.rb:213:in `start'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > spawn_manager.rb:262:in `spawn_rails_application'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > abstract_server_collection.rb:126:in `lookup_or_add'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > spawn_manager.rb:256:in `spawn_rails_application'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > abstract_server_collection.rb:80:in `synchronize'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > abstract_server_collection.rb:79:in `synchronize'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > spawn_manager.rb:255:in `spawn_rails_application'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > spawn_manager.rb:154:in `spawn_application'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > spawn_manager.rb:287:in `handle_spawn_application'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > abstract_server.rb:352:in `__send__'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > abstract_server.rb:352:in `main_loop'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/lib/phusion_passenger/
> > abstract_server.rb:196:in `start_synchronously'
> > /Library/Ruby/Gems/1.8/gems/passenger-2.2.5/bin/passenger-spawn-server:
> > 61
> >
> > The setup is as follows:
> >
> >  #Thinking Sphinx
> >  define_index do
> >    for entity in Entity.all
> >      Page.connection.change_database!(entity.domain_hash)
> >
> >      define_source do
> >               indexes :name
> >               indexes :body, :as => :description
> >
> >        has component_instance.deleted_on, :as => :deleted_on
> >        has component_instance.deleted_root_item, :as
> > => :deleted_root_item
> >        has component_instance.component.backend_only, :as
> > => :backend_only
> >
> >        has '(SELECT `entity_id` FROM `site_settings` LIMIT 1)', :as
> > => :entity_id, :type => :integer
> >
> >        where 'deleted_on IS NULL AND deleted_root_item IS NULL'
> >
> >        set_property :delta => :datetime, :threshold => 1.hour
> >
> >      end
> >    end
> > end
> >
> >
> > I thought that perhaps the delta wouldn't bother doing anything
> > because this is a timestamp delta that should only run when I call it
> > from the command line, but it seems to call the standard code anyway?
> >
> > I delved deeper into script/console and tried to delete the
> > component_instance there to see if there's a clearer error but it's
> > still the same.
> >
> > I'm using the latest versions of both the delta gem and ts gem as of
> > today. :)
> >
> > Hope someone can help :D
> >
> > Brendon
> > --
> > You received this message because you are subscribed to the Google Groups
> "Thinking Sphinx" group.
> > To post to this group, send email to thinking-sph...@googlegroups.com.
> > To unsubscribe from this group, send email to
> thinking-sphinx+unsubscr...@googlegroups.com<thinking-sphinx%2bunsubscr...@googlegroups.com>
> .
> > 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 thinking-sph...@googlegroups.com.
> To unsubscribe from this group, send email to
> thinking-sphinx+unsubscr...@googlegroups.com<thinking-sphinx%2bunsubscr...@googlegroups.com>
> .
> 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 thinking-sph...@googlegroups.com.
To unsubscribe from this group, send email to 
thinking-sphinx+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/thinking-sphinx?hl=en.

Reply via email to