views:

953

answers:

3

Followed this question about delayed_job and monit

Its working on my development machine. But whenever I try to run on production, it just dies with following on delayed_job.log

*** Starting job worker delayed_job host:mail.welcometonewnepal.com pid:356
#<Mysql::Error: Access denied for user 'root'@'localhost' (using password: YES)>
*** Starting job worker delayed_job host:mail.welcometonewnepal.com pid:441
#<Mysql::Error: Access denied for user 'root'@'localhost' (using password: YES)>
*** Starting job worker delayed_job host:mail.welcometonewnepal.com pid:448
#<Mysql::Error: Access denied for user 'root'@'localhost' (using password: YES)>

And I m going to run in production env

ruby script/delayed_job start -e production

Still it errors out. I m noticing that this is due to the environment not set so that it tries to pick up the development environment.

/opt/ruby-enterprise-1.8.6-20090610/lib/ruby/gems/1.8/gems/rails-2.3.2/lib/initializer.rb:365:in `read': No such file or directory - /home/millisami/rails_apps/wnn_finale/config/environments/-e.rb (Errno::ENOENT)

Why isn't the environment parameter not set properly?

+2  A: 

I might be worng here, but are you using this gist as script/delayed_job? If so, it doesn't need the "-e" - simply calling script/delayed_job start production or chaning the line that starts with ENV['RAILS_ENV'] (replacing "development" with "production") should be sufficient.

If you still get errors from MySQL afterwards, you should double check your username and password.

cite
A: 

Try script/delayed_job start -- production. I don't think you pass the environment to DJ the same way as you would to script/server. This answer is specific to the delayed_job file that we use, I'm looking for a gist of it.

EDIT: Here is the gist of the file we use.

theIV
A: 

Just use

ruby RAILS_ENV=production script/delayed_job start
punkrats