I just ran into a problem with production mode. Normally i never run this locally but i decided to use it to run my selenium test battery against, since it’s much faster than dev mode. In production mode on our server we pull our assets in from an amazon asset server, done with this line in production.rb
config.action_controller.asset_host = “http://assets.fakedomain.ir.com”
In my local version of production i don’t want to do this though, i just want to use what’s in my local public folder. I decided to have a look at ENV which i did by making apache explode
prior to the above line –
raise “ENV = #{ENV.inspect}”
Quick restart of my local apache, reload the page, and BANG, i can see this:
ENV = {“APACHE_PID_FILE”=>”/var/run/apache2.pid”, “PATH”=>”/usr/local/bin:/usr/bin:/bin”, “LANG”=>”C”, “APACHE_RUN_GROUP”=>”www-data”, “APACHE_RUN_USER”=>”www-data”, “PWD”=>”/etc/apache2/sites-available”, “RAILS_ENV”=>”production”, “HOME”=>”/home/max”, “RAILS_ASSET_ID”=>”"}
aha – “HOME”=>”/home/max” – perfect!
So, i changed the line (and removed the raise!) to
config.action_controller.asset_host = “http://assets.fakedomain.ir.charanga.com” unless ENV['HOME'] == “/home/max”
Bingo. Perhaps not the cleverest way of doing it, but it’s safe – for everyone else, including our server, ENV['HOME'] will be something else, or perhaps nil. Either way, they’ll use the remote assets site.