Runner suddenly fails...

I have some jobs running through cron jobs and runner that suddenly starts failing.

This is how it looks:

from /usr/local/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/commands/runner.rb:47   from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'   from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'   from /usr/local/www/letter_archive/crontabs/../script/runner:3

This only happens if the job gets triggered by cron not if I do it by hand.

I suspect this started hapening when I upgraded to gem 1.3.1

Any ideas?

Mattias Bud wrote:

I have some jobs running through cron jobs and runner that suddenly starts failing.

This is how it looks:

from /usr/local/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/commands/runner.rb:47   from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'   from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'   from /usr/local/www/letter_archive/crontabs/../script/runner:3

This only happens if the job gets triggered by cron not if I do it by hand.

I suspect this started hapening when I upgraded to gem 1.3.1

Any ideas?

I'd have to see more of the stack trace to be sure, but it's probably due to problems with either the PATH or GEM_HOME environment variables in the cron shell context.

Try a crontab command like

env PATH=/usr/local/bin:/usr/bin GEM_HOME=/usr/local/lib/ruby/gems/1.8 /usr/local/www/letter_archive/script/runner -e production <command>

This is how the complete message looks like:

/usr/local/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/commands/runner.rb:47: /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/connection_adapters/mysql_adapter.rb:527:in `real_connect': Unknown database 'dbname_production' (Mysql::Error)   from /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/connection_adapters/mysql_adapter.rb:527:in `connect'   from /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/connection_adapters/mysql_adapter.rb:186:in `initialize'   from /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/connection_adapters/mysql_adapter.rb:85:in `new'   from /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/connection_adapters/mysql_adapter.rb:85:in `mysql_connection'   from /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:292:in `send'   from /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:292:in `connection='   from /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:260:in `retrieve_connection'   from /usr/local/lib/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:78:in `connection'    ... 6 levels...   from /usr/local/lib/ruby/gems/1.8/gems/rails-2.1.2/lib/commands/runner.rb:47   from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require'   from /usr/local/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'   from /usr/local/www/letter_archive/crontabs/../script/runner:3

Mattias Bud wrote:

`real_connect': Unknown database 'dbname_production' (Mysql::Error)

Does this exist, or do you want to use the dbname_development database by leaving the "-e production" option off the runner command?

After hours of testing and debugging I found that these masseges was comming from the backup machine and not from the production one.

Problem solved