[Backgroundrb-devel] Production RAILS_ENV / DB Selection

Matt White stockliasteroid at gmail.com
Mon Nov 20 18:23:47 EST 2006


Hey all,

I'm having some issues moving a project that incorporates Backgroundrb onto
a staging server... For some reason (surely of my own doing), my RailsBase
workers are insisting on using trying to access my development DB instead of
my "production" DB.

When I try to load a model object from within a worker, I get the following:


20061120-21:54:28 (26296) #<DRb::DRbUnknown:0x40691130>
20061120-21:54:28 (26296)
/var/www/gorchie/releases/20061120100506/config/../vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb:387:in
`real_connect'
/var/www/gorchie/releases/20061120100506/config/../vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb:387:in
`connect'
/var/www/gorchie/releases/20061120100506/config/../vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb:151:in
`initialize'
/var/www/gorchie/releases/20061120100506/config/../vendor/rails/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb:82:in
`mysql_connection'
/var/www/gorchie/releases/20061120100506/config/../vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb:252:in
`connection_without_query_cache='
/var/www/gorchie/releases/20061120100506/config/../vendor/rails/activerecord/lib/active_record/query_cache.rb:54:in
`connection='
/var/www/gorchie/releases/20061120100506/config/../vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb:220:in
`retrieve_connection'
/var/www/gorchie/releases/20061120100506/config/../vendor/rails/activerecord/lib/active_record/connection_adapters/abstract/connection_specification.rb:78:in
`connection'
/var/www/gorchie/releases/20061120100506/config/../vendor/rails/activerecord/lib/active_record/base.rb:760:in
`columns'
/var/www/gorchie/releases/20061120100506/config/../vendor/rails/activerecord/lib/active_record/base.rb:768:in
`columns_hash'
/var/www/gorchie/releases/20061120100506/config/../vendor/rails/activerecord/lib/active_record/base.rb:1020:in
`find_one'
/var/www/gorchie/releases/20061120100506/config/../vendor/rails/activerecord/lib/active_record/base.rb:1011:in
`find_from_ids'
/var/www/gorchie/releases/20061120100506/config/../vendor/rails/activerecord/lib/active_record/base.rb:416:in
`find'
/var/www/gorchie/releases/20061120100506/lib/workers/upload_process_worker.rb:14:in
`do_work'
/var/www/gorchie/releases/20061120100506/vendor/plugins/backgroundrb/server/lib/backgroundrb/worker.rb:49:in
`work_thread'
/var/www/gorchie/releases/20061120100506/vendor/plugins/backgroundrb/server/lib/backgroundrb/worker.rb:49:in
`work_thread'
/usr/local/lib/ruby/1.8/drb/drb.rb:1552:in `perform_without_block'
/usr/local/lib/ruby/1.8/drb/drb.rb:1512:in `perform'
/usr/local/lib/ruby/1.8/drb/drb.rb:1586:in `main_loop'
/usr/local/lib/ruby/1.8/drb/drb.rb:1582:in `main_loop'
/usr/local/lib/ruby/1.8/drb/drb.rb:1578:in `main_loop'
/usr/local/lib/ruby/1.8/drb/drb.rb:1427:in `run'
/usr/local/lib/ruby/1.8/drb/drb.rb:1424:in `run'
/usr/local/lib/ruby/1.8/drb/drb.rb:1344:in `initialize'
/usr/local/lib/ruby/1.8/drb/drb.rb:1624:in `start_service'
/usr/local/lib/ruby/gems/1.8/gems/slave-1.0.0/lib/slave.rb:205:in
`initialize'
/usr/local/lib/ruby/gems/1.8/gems/slave-1.0.0/lib/slave.rb:200:in
`initialize'
/var/www/gorchie/releases/20061120100506/vendor/plugins/backgroundrb/server/lib/backgroundrb/middleman.rb:169:in
`new_worker'
/var/www/gorchie/releases/20061120100506/vendor/plugins/backgroundrb/server/lib/backgroundrb/thread_pool.rb:36:in
`dispatch'
/var/www/gorchie/releases/20061120100506/vendor/plugins/backgroundrb/server/lib/backgroundrb/thread_pool.rb:22:in
`dispatch'
/var/www/gorchie/releases/20061120100506/vendor/plugins/backgroundrb/server/lib/backgroundrb/middleman.rb:159:in
`new_worker'
/usr/local/lib/ruby/1.8/drb/drb.rb:1552:in `perform_without_block'
/usr/local/lib/ruby/1.8/drb/drb.rb:1512:in `perform'
/usr/local/lib/ruby/1.8/drb/drb.rb:1586:in `main_loop'
/usr/local/lib/ruby/1.8/drb/drb.rb:1582:in `main_loop'
/usr/local/lib/ruby/1.8/drb/drb.rb:1578:in `main_loop'
/usr/local/lib/ruby/1.8/drb/drb.rb:1427:in `run'
/usr/local/lib/ruby/1.8/drb/drb.rb:1424:in `run'
/usr/local/lib/ruby/1.8/drb/drb.rb:1344:in `initialize'
/usr/local/lib/ruby/1.8/drb/drb.rb:1624:in `start_service'
/var/www/gorchie/releases/20061120100506/vendor/plugins/backgroundrb/server/lib/backgroundrb_server.rb:215:in
`run'
/usr/local/lib/ruby/gems/1.8/gems/daemons-1.0.3/lib/daemons/application.rb:186:in
`start_proc'
/usr/local/lib/ruby/gems/1.8/gems/daemons-1.0.3/lib/daemons/daemonize.rb:208:in
`call_as_daemon'
/usr/local/lib/ruby/gems/1.8/gems/daemons-1.0.3/lib/daemons/application.rb:190:in
`start_proc'
/usr/local/lib/ruby/gems/1.8/gems/daemons-1.0.3/lib/daemons/application.rb:226:in
`start'
/usr/local/lib/ruby/gems/1.8/gems/daemons-1.0.3/lib/daemons/controller.rb:69:in
`run'
/usr/local/lib/ruby/gems/1.8/gems/daemons-1.0.3/lib/daemons.rb:179:in
`run_proc'
/usr/local/lib/ruby/gems/1.8/gems/daemons-1.0.3/lib/daemons/cmdline.rb:94:in
`catch_exceptions'
/usr/local/lib/ruby/gems/1.8/gems/daemons-1.0.3/lib/daemons.rb:178:in
`run_proc'
/var/www/gorchie/releases/20061120100506/vendor/plugins/backgroundrb/server/lib/backgroundrb_server.rb:204:in
`run'
script/backgroundrb:29

I then went into the backgroundrb console and basically ran the same code as
appears in the RailsBase.initialize() method to init the DB based on the
current ENV['RAILS_ENV'] (which is set to "production" in my backgroundrb
config file). The bit that calls establish_connection on ActiveRecord::Base
works fine, and seems to connect to the production DB, because I'm able to
run manual queries with execute() against it and get results.

However, when I include environment.rb to load Rails, and then subsequently
try to run queries against my models, I get the access denied error that
indicates that it's trying to access my dev DB instead of my production DB.
So, it seems that somehow Rails is starting in development mode even though
I can confirm that ENV['RAILS_ENV'] == "production". However, if I check the
value of RAILS_ENV while within the backgroundrb console, it is set to
"development". So, for some reason ENV['RAILS_ENV'] does not have the same
value as RAILS_ENV.

So, I'm stumped. It all works fine locally, but I'm running in dev mode
locally so this issue wouldn't surface.

Any help or insight would be greatly appreciated.

Thanks,

Matt White
-- 
Thermal Creative
http://blog.thermalcreative.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://rubyforge.org/pipermail/backgroundrb-devel/attachments/20061121/27544fd5/attachment.html 


More information about the Backgroundrb-devel mailing list