Hmm, maybe after all this is not a thinking sphinx issue. I found the same database dependence in another app that doesn't use ts. But it also uses observers. It seems the model loading requires a db connection to replace and quote interpolation values in scope condition for example. I submitted a ticket to Heroku about this, asking them if they can remove the database independency requirement for asset compilation.
On 9 Nov., 03:25, Pat Allan <[email protected]> wrote: > In theory, yes - except there's been cases where people are setting different > db connection details either side of the define_index block, so the context > *at the time of definition* matters. I guess it'd be possible to have a flag > set when that rake task is called, and toggle accordingly - though that's > just another layer of complication. > > Will keep all of this in mind as I work through the rewrite. > > -- > Pat > > On 09/11/2011, at 1:42 AM, nico wrote: > > > > > > > > > Wouldn't it be sufficient for thinking sphinx to do the db stuff only > > when running the indexing tasks? > > > On 8 Nov., 12:19, Pat Allan <[email protected]> wrote: > >> It's probably because the Observers are loaded, which means the models are > >> loaded, which means the index definitions are loaded - and they check the > >> db settings at the time of definition. > > >> -- > >> Pat > > >> On 08/11/2011, at 5:06 PM, nico wrote: > > >>> Yep, that works... ;-) > > >>> On 8 Nov., 11:06, nico <[email protected]> wrote: > >>>> Ah, okay, thanks Pat, that sounds like a workaround! Will try it out. > > >>>> The weird thing is that the db requirements are only there when using > >>>> the observers. I don't understand why... > > >>>> Nico > > >>>> On 7 Nov., 19:16, Pat Allan <[email protected]> wrote: > > >>>>> Sorry Nico, nothing yet… it's hard to avoid the db requirements. > > >>>>> Maybe you can only set observers if ENV['RAILS_GROUPS'] isn't set to > >>>>> assets? > > >>>>> -- > >>>>> Pat > > >>>>> On 07/11/2011, at 4:25 PM, nico wrote: > > >>>>>> Anyone any ideas here? > > >>>>>> On 5 Nov., 16:28, nico <[email protected]> wrote: > >>>>>>> Sure: > > >>>>>>> config.active_record.observers = [:company_cache_observer, > >>>>>>> :layout_cache_observer, > >>>>>>> :user_observer, > >>>>>>> :userpoints_observer, > >>>>>>> :ownership_observer] > >>>>>>> On 5 Nov., 16:13, Pat Allan <[email protected]> wrote: > > >>>>>>>> Hi Nico > > >>>>>>>> Can you show us how you're loading the observers in your > >>>>>>>> application.rb file? > > >>>>>>>> -- > >>>>>>>> Pat > > >>>>>>>> On 05/11/2011, at 4:02 PM, nico wrote: > > >>>>>>>>> Strangely, thinking sphinx's model loading in define_index triggers > >>>>>>>>> a > >>>>>>>>> database connection to be established when the model with > >>>>>>>>> define_index > >>>>>>>>> is observed by an observer. > > >>>>>>>>> This causes rake tasks like assets:precompile to depend on a db > >>>>>>>>> connection which should normally not be required. This dependency > >>>>>>>>> makes asset compilation on Heroku fail. If I remove the observer > >>>>>>>>> loading in application.rb, the database dependency does't exist and > >>>>>>>>> rake tasks work fine without a db configured. > > >>>>>>>>> It's quite hard to debug this, help is greatly appreciated! Here is > >>>>>>>>> the stack trace for rake assets:precompile when rails is configured > >>>>>>>>> with a non existing database and using observers: > > >>>>>>>>> bundle exec rake assets:precompile RAILS_ENV=staging --trace > >>>>>>>>> ** Invoke assets:precompile (first_time) > >>>>>>>>> ** Execute assets:precompile > >>>>>>>>> /Users/nico/.rvm/rubies/ruby-1.9.2-p290/bin/ruby > >>>>>>>>> /Users/nico/.rvm/gems/ > >>>>>>>>> ruby-1.9.2-p290/bin/rake assets:precompile:all RAILS_ENV=staging > >>>>>>>>> RAILS_GROUPS=assets --trace > >>>>>>>>> ** Invoke assets:precompile:all (first_time) > >>>>>>>>> ** Execute assets:precompile:all > >>>>>>>>> ** Invoke assets:precompile:primary (first_time) > >>>>>>>>> ** Invoke assets:environment (first_time) > >>>>>>>>> ** Execute assets:environment > >>>>>>>>> ** Invoke environment (first_time) > >>>>>>>>> ** Execute environment > >>>>>>>>> rake aborted! > >>>>>>>>> FATAL: database "non_existing_database" does not exist > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/connection_adapters/postgresql_adapter.rb:1032:in > >>>>>>>>> `initialize' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/connection_adapters/postgresql_adapter.rb:1032:in > >>>>>>>>> `new' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/connection_adapters/postgresql_adapter.rb:1032:in > >>>>>>>>> `connect' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/connection_adapters/postgresql_adapter.rb:301:in > >>>>>>>>> `initialize' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/connection_adapters/postgresql_adapter.rb:28:in `new' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/connection_adapters/postgresql_adapter.rb:28:in > >>>>>>>>> `postgresql_connection' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/connection_adapters/abstract/connection_pool.rb:304:in > >>>>>>>>> `new_connection' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/connection_adapters/abstract/connection_pool.rb:323:in > >>>>>>>>> `checkout_new_connection' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/connection_adapters/abstract/connection_pool.rb:265:in > >>>>>>>>> `block (2 levels) in checkout' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/connection_adapters/abstract/connection_pool.rb:261:in > >>>>>>>>> `loop' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/connection_adapters/abstract/connection_pool.rb:261:in > >>>>>>>>> `block in checkout' > >>>>>>>>> /Users/nico/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/1.9.1/monitor.rb: > >>>>>>>>> 201:in `mon_synchronize' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/connection_adapters/abstract/connection_pool.rb:260:in > >>>>>>>>> `checkout' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/connection_adapters/abstract/connection_pool.rb:162:in > >>>>>>>>> `connection' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/connection_adapters/abstract/connection_pool.rb:409:in > >>>>>>>>> `retrieve_connection' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/connection_adapters/abstract/connection_specification.rb: > >>>>>>>>> 107:in `retrieve_connection' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/connection_adapters/abstract/connection_specification.rb: > >>>>>>>>> 89:in `connection' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/base.rb:1473:in `replace_bind_variables' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/base.rb:1460:in `sanitize_sql_array' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/base.rb:1366:in `sanitize_sql_for_conditions' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/relation/query_methods.rb:259:in `build_where' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/relation/query_methods.rb:124:in `where' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activerecord-3.1.1/lib/ > >>>>>>>>> active_record/base.rb:444:in `where' > >>>>>>>>> /Users/nico/Rails/myapp/app/models/user.rb:194:in `<class:User>' > >>>>>>>>> /Users/nico/Rails/myapp/app/models/user.rb:100:in `<top (required)>' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/ > >>>>>>>>> active_support/dependencies.rb:240:in `require' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/ > >>>>>>>>> active_support/dependencies.rb:240:in `block in require' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/ > >>>>>>>>> active_support/dependencies.rb:225:in `load_dependency' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/ > >>>>>>>>> active_support/dependencies.rb:240:in `require' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/ > >>>>>>>>> active_support/dependencies.rb:348:in `require_or_load' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/ > >>>>>>>>> active_support/dependencies.rb:489:in `load_missing_constant' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/ > >>>>>>>>> active_support/dependencies.rb:181:in `block in const_missing' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/ > >>>>>>>>> active_support/dependencies.rb:179:in `each' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/ > >>>>>>>>> active_support/dependencies.rb:179:in `const_missing' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/aws-s3-0.6.2/lib/aws/s3/ > >>>>>>>>> extensions.rb:206:in `const_missing_from_s3_library' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/ > >>>>>>>>> active_support/dependencies.rb:501:in `load_missing_constant' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/ > >>>>>>>>> active_support/dependencies.rb:181:in `block in const_missing' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/ > >>>>>>>>> active_support/dependencies.rb:179:in `each' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/activesupport-3.1.1/lib/ > >>>>>>>>> active_support/dependencies.rb:179:in `const_missing' > >>>>>>>>> /Users/nico/.rvm/gems/ruby-1.9.2-p290/gems/aws-s3-0.6.2/lib/aws/s3/ > >>>>>>>>> extensions.rb:206:in `const_missing_from_s3_library' > >>>>>>>>> /Users/nico/Rails/myapp/app/models/company.rb:103:in > >>>>>>>>> `<class:Company>' > > ... > > Erfahren Sie mehr » -- 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.
