Hi Martijn

I think I found the problem - Rails 2.2 and newer will automatically  
load models when cache_classes is set to true (ie: production/staging  
environments). This wasn't the case back in 2.1, so now Thinking  
Sphinx checks versions and will load models itself if necessary. Give  
the latest version a shot, see if that helps.

Cheers

-- 
Pat

On 06/08/2009, at 9:32 AM, Martijn wrote:

>
> Hi Pat,
>
> I'm running Rails 2.1.0
>
> Thanks so much,
> Martijn
>
> On Aug 5, 11:58 pm, Pat Allan <[email protected]> wrote:
>> Ah, great research... just one more question, then I can really dig
>> into solving it, hopefully this week: what version of Rails are you
>> running?
>>
>> --
>> Pat
>>
>> On 05/08/2009, at 3:57 PM, Martijn wrote:
>>
>>
>>
>>> Done it. Still doesn't work :( I've figured out some of its behavior
>>> though...
>>
>>> After a deploy (and running rake RAILS_ENV=staging ts:config ; rake
>>> RAILS_ENV=staging ts:stop ; rake RAILS_ENV=staging ts:index ; rake
>>> RAILS_ENV=staging ts:start) I go to the console.
>>
>>> ThinkingSphinx.indexed_models.inspect returns []
>>> Page.search ' ' returns results (yes!!)
>>> ThinkingSphinx.indexed_models.inspect then returns ['Page']
>>> Item.search ' ' gives the error (NoMethodError: undefined method
>>> `constantize' for nil:NilClass)
>>> ThinkingSphinx.indexed_models.inspect then returns ['Page','Item']
>>> Page.search ' ' keeps returning results, but Item.search ' ' keeps
>>> giving the error.
>>
>>> Hopefully this is a useful clue? Running
>>> 'ThinkingSphinx.indexed_models.inspect' for the first time in
>>> development returns ['Page', 'Post', 'Item'] immediately.
>>
>>> Martijn
>>
>>> On Aug 5, 3:42 pm, Pat Allan <[email protected]> wrote:
>>>> It's odd, indeed. The only difference I can see in your indexes is
>>>> that Item doesn't use associations, but the other two do. Can you
>>>> remove the associations fields and attributes (and add a  
>>>> placeholder
>>>> field for Page, because at least one is needed - indexes
>>>> "'text'", :as
>>>> => :text) and see if that changes anything?
>>
>>>> --
>>>> Pat
>>
>>>> On 05/08/2009, at 2:36 PM, Martijn wrote:
>>
>>>>> When I put 'puts ThinkingSphinx.indexed_models.inspect' inside the
>>>>> def
>>>>> models_by_crc in configuration.rb, it returns every model at
>>>>> development - ["Item", "Page", "Post"] and only one model at
>>>>> staging -
>>>>> ["Item"]. (The search only works for Items in this case ...)
>>
>>>>> So I guess the million pancake question is: why doesn't it display
>>>>> all
>>>>> the models? I don't get any strange output when running 'rake  
>>>>> ts:in
>>>>> RAILS_ENV=staging'
>>
>>>>> Martijn
>>
>>>>> On Aug 5, 2:52 pm, Pat Allan <[email protected]> wrote:
>>>>>> Hi Martijn
>>
>>>>>> Thanks for the update with the latest stack trace. It's odd that
>>>>>> it's
>>>>>> one model in particular that's having problems. Can you share  
>>>>>> your
>>>>>> define_index blocks for each model?
>>
>>>>>> --
>>>>>> Pat
>>
>>>>>> On 05/08/2009, at 1:10 PM, Martijn wrote:
>>
>>>>>>> Hi Pat,
>>
>>>>>>> Thanks for the reply. I've updated to the latest version of TS
>>>>>>> now.
>>>>>>> The error stays though...
>>
>>>>>>> Querying Sphinx: lorem
>>
>>>>>>> ActionView::TemplateError (undefined method `constantize' for
>>>>>>> nil:NilClass) on line #8 of projects/search.html.erb:
>>
>>>>>>> 8:       <%- @contributions.each do |contribution| %>
>>>>>>> ...
>>>>>>>    vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:
>>>>>>> 615:in `class_from_crc'
>>>>>>>    vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:
>>>>>>> 601:in `instances_from_matches'
>>>>>>>    vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:
>>>>>>> 599:in `each'
>>>>>>>    vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:
>>>>>>> 599:in `instances_from_matches'
>>>>>>>    vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:
>>>>>>> 219:in `populate'
>>>>>>>    vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:
>>>>>>> 284:in `call'
>>>>>>>    vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:
>>>>>>> 284:in `retry_on_stale_index'
>>>>>>>    vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:
>>>>>>> 205:in `populate'
>>>>>>>    vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:
>>>>>>> 78:in
>>>>>>> `method_missing'
>>
>>>>>>> The strange thing is, I search over 3 models; Post, Page and
>>>>>>> Item. I
>>>>>>> only get this error when I search for text that appears in a  
>>>>>>> Post.
>>>>>>> It
>>>>>>> only happens at staging as well - on my development machine
>>>>>>> everything
>>>>>>> works.
>>
>>>>>>> regards,
>>>>>>> Martijn
>>
>>>>>>> On Aug 4, 9:41 pm, Pat Allan <[email protected]> wrote:
>>>>>>>> Hi Martijn
>>
>>>>>>>> Not entirely sure why this is happening - but it appears you're
>>>>>>>> using
>>>>>>>> an old version of TS, so that makes it a bit hard to debug.  
>>>>>>>> Would
>>>>>>>> you
>>>>>>>> be able to update to the latest and try again?
>>
>>>>>>>> Also, I've deprecated ThinkingSphinx::Search.search for
>>>>>>>> ThinkingSphinx.search in recent versions (1.2.x) - although the
>>>>>>>> old
>>>>>>>> syntax still works.
>>
>>>>>>>> Cheers
>>
>>>>>>>> --
>>>>>>>> Pat
>>
>>>>>>>> On 04/08/2009, at 4:38 PM, Martijn wrote:
>>
>>>>>>>>> Hi all,
>>
>>>>>>>>> On my staging environment, I want to search over multiple
>>>>>>>>> models.
>>>>>>>>> If I
>>>>>>>>> search models individually, everything works fine. However,  
>>>>>>>>> if I
>>>>>>>>> search using ThinkingSphinx::Search.search 'something' - I get
>>>>>>>>> the
>>>>>>>>> following error:
>>
>>>>>>>>> NoMethodError (undefined method `constantize' for  
>>>>>>>>> nil:NilClass):
>>>>>>>>>    /vendor/plugins/thinking-sphinx/lib/thinking_sphinx/
>>>>>>>>> collection.rb:
>>>>>>>>> 101:in `class_from_crc'
>>>>>>>>>    /vendor/plugins/thinking-sphinx/lib/thinking_sphinx/
>>>>>>>>> collection.rb:
>>>>>>>>> 80:in `instances_from_classes'
>>>>>>>>>    /vendor/plugins/thinking-sphinx/lib/thinking_sphinx/
>>>>>>>>> collection.rb:
>>>>>>>>> 78:in `each'
>>>>>>>>>    /vendor/plugins/thinking-sphinx/lib/thinking_sphinx/
>>>>>>>>> collection.rb:
>>>>>>>>> 78:in `instances_from_classes'
>>>>>>>>>    /vendor/plugins/thinking-sphinx/lib/thinking_sphinx/
>>>>>>>>> collection.rb:
>>>>>>>>> 39:in `instances_from_matches'
>>>>>>>>>    /vendor/plugins/thinking-sphinx/lib/thinking_sphinx/
>>>>>>>>> collection.rb:
>>>>>>>>> 31:in `create_from_results'
>>>>>>>>>    /vendor/plugins/thinking-sphinx/lib/thinking_sphinx/
>>>>>>>>> search.rb:
>>>>>>>>> 371:in `search'
>>>>>>>>>    /vendor/plugins/thinking-sphinx/lib/thinking_sphinx/
>>>>>>>>> search.rb:
>>>>>>>>> 388:in `call'
>>>>>>>>>    /vendor/plugins/thinking-sphinx/lib/thinking_sphinx/
>>>>>>>>> search.rb:
>>>>>>>>> 388:in `retry_search_on_stale_index'
>>>>>>>>>    /vendor/plugins/thinking-sphinx/lib/thinking_sphinx/
>>>>>>>>> search.rb:
>>>>>>>>> 363:in `search'
>>
>>>>>>>>> Everything works on development though. Why do I get this
>>>>>>>>> error on
>>>>>>>>> staging? Help is greatly appreciated!
> >


--~--~---------~--~----~------------~-------~--~----~
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