# Acts as ferret issue (in Production)

**URL:** <https://www.ruby-forum.com/t/acts-as-ferret-issue-in-production/182163>\
**Category:** Rails\
**Created:** [January 23, 2010, 7:20pm UTC](https://www.ruby-forum.com/t/acts-as-ferret-issue-in-production/182163 "2010-01-23T19:20:04Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![craigrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c2a13f/32.png) [@craigrails](https://www.ruby-forum.com/u/craigrails)\
**Post date:** [January 23, 2010, 7:20pm UTC](https://www.ruby-forum.com/t/acts-as-ferret-issue-in-production/182163/1 "2010-01-23T19:20:04Z")

</div>

Hi there - i’m looking for anyone who 's experienced inconsistent  
behaviour in ferret:

The search engine is somewhat temperamental, some words are returned,  
and some result in a 500 server error…

the error in the log is as follows:. (this is straight off the  
production log:

\*\* What’s confusing, is that the engine does return some results, but  
not always… I know some words exist in the database, and I have also  
reset the ferret server.

Processing BuddiesController#search (for 86.150.12.191 at 2010-01-23  
18:06:44) [GET]  
Parameters: {“q”=\>“craig”}

NoMethodError (undefined method `info' for nil:NilClass): app/controllers/buddies_controller.rb:55:in`search’  
app/controllers/buddies\_controller.rb:55:in `search' /usr/lib/ruby/1.8/phusion_passenger/rack/request_handler.rb:92:in`process\_request’  
/usr/lib/ruby/1.8/phusion\_passenger/abstract\_request\_handler.rb:  
207:in `main_loop' /usr/lib/ruby/1.8/phusion_passenger/railz/application_spawner.rb: 385:in`start\_request\_handler’  
/usr/lib/ruby/1.8/phusion\_passenger/railz/application\_spawner.rb:  
343:in `handle_spawn_application' /usr/lib/ruby/1.8/phusion_passenger/utils.rb:184:in`safe\_fork’  
/usr/lib/ruby/1.8/phusion\_passenger/railz/application\_spawner.rb:  
341:in `handle_spawn_application' /usr/lib/ruby/1.8/phusion_passenger/abstract_server.rb:352:in` **send** ’  
/usr/lib/ruby/1.8/phusion\_passenger/abstract\_server.rb:352:in  
`main_loop' /usr/lib/ruby/1.8/phusion_passenger/abstract_server.rb:196:in`start\_synchronously’  
/usr/lib/ruby/1.8/phusion\_passenger/abstract\_server.rb:163:in  
`start' /usr/lib/ruby/1.8/phusion_passenger/railz/application_spawner.rb: 209:in`start’  
/usr/lib/ruby/1.8/phusion\_passenger/spawn\_manager.rb:262:in  
`spawn_rails_application' /usr/lib/ruby/1.8/phusion_passenger/abstract_server_collection.rb: 126:in`lookup\_or\_add’  
/usr/lib/ruby/1.8/phusion\_passenger/spawn\_manager.rb:256:in  
`spawn_rails_application' /usr/lib/ruby/1.8/phusion_passenger/abstract_server_collection.rb: 80:in`synchronize’  
/usr/lib/ruby/1.8/phusion\_passenger/abstract\_server\_collection.rb:  
79:in `synchronize' /usr/lib/ruby/1.8/phusion_passenger/spawn_manager.rb:255:in`spawn\_rails\_application’  
/usr/lib/ruby/1.8/phusion\_passenger/spawn\_manager.rb:154:in  
`spawn_application' /usr/lib/ruby/1.8/phusion_passenger/spawn_manager.rb:287:in`handle\_spawn\_application’  
/usr/lib/ruby/1.8/phusion\_passenger/abstract\_server.rb:352:in  
` __send__' /usr/lib/ruby/1.8/phusion_passenger/abstract_server.rb:352:in`main\_loop’  
/usr/lib/ruby/1.8/phusion\_passenger/abstract\_server.rb:196:in  
`start\_synchronously’  
/usr/lib/phusion\_passenger/passenger-spawn-server:61

Rendering /srv/pistebuddies.com/public/public/500.html (500 Internal  
Server Error)

Any ideas?

Many Thanks

---

<div class="post-metadata">

**Author:** ![craigrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c2a13f/32.png) [@craigrails](https://www.ruby-forum.com/u/craigrails)\
**Post date:** [January 23, 2010, 9:34pm UTC](https://www.ruby-forum.com/t/acts-as-ferret-issue-in-production/182163/2 "2010-01-23T21:34:06Z")

</div>

On 23 January 2010 18:17, RubyonRails\_newbie  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> not always… I know some words exist in the database, and I have also  
> reset the ferret server.
> 
> Processing BuddiesController#search (for 86.150.12.191 at 2010-01-23  
> 18:06:44) [GET]  
> Parameters: {“q”=\>“craig”}
> 
> NoMethodError (undefined method `info' for nil:NilClass): app/controllers/buddies_controller.rb:55:in `search’

It appears that in line 55 of buddies\_controller.rb you are calling  
something.info where something is nil (the clue is in the error  
message). Have a look to see why it might be nil. Post the code  
here if you cannot see it.

Colin

---

<div class="post-metadata">

**Author:** ![craigrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c2a13f/32.png) [@craigrails](https://www.ruby-forum.com/u/craigrails)\
**Post date:** [January 24, 2010, 8:06pm UTC](https://www.ruby-forum.com/t/acts-as-ferret-issue-in-production/182163/3 "2010-01-24T20:06:31Z")

</div>

Hi Colin,

I’ve been searching the code, but not 100% sure what’s up. It was ok  
in dev, so can’t explain it… 🙂

line 55 is this line here: users.each { |user| user.info ||=  
Info.new }

Here’s the full code from the buddies\_controller:

def search  
@title = “Find Buddies”  
if params[:q]  
query = params[:q]  
curr\_page = params[:page] || 1  
users = User.find\_with\_ferret(query)  
infos = Info.find\_with\_ferret(query)  
hits = infos  
users.concat(hits.collect { |hit| hit.user }).uniq!

```
    users.each { |user| user.info ||= Info.new }
    users = users.sort_by { |user| user.info.last_name }
    @buddies = users.paginate(:page => curr_page, :per_page => 5)
   end

```

end

Many, Many thanks!!

---

<div class="post-metadata">

**Author:** ![craigrails](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/c2a13f/32.png) [@craigrails](https://www.ruby-forum.com/u/craigrails)\
**Post date:** [January 24, 2010, 9:26pm UTC](https://www.ruby-forum.com/t/acts-as-ferret-issue-in-production/182163/4 "2010-01-24T21:26:43Z")

</div>

2010/1/24 RubyonRails\_newbie [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> ```
> users.each { |user| user.info ||= Info.new }
> 
> ```

It appears that one of the users is nil. Have a look at the Rails  
Guide on debugging and use ruby-debug to break into here (you can run  
it in production mode with the debugger) and inspect the variables and  
see what is happening.

Is is possible that the concat call is appending a nil element?

Colin
