Verifique se você tem isso em config/environments/production
# Fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = true
Basicamente seu problema é que seus ativos não estão sendo compilados automaticamente.
Mais informações aqui:http://devcenter.heroku.com/articles/rails31_heroku_cedar
Editar:
A partir do Rails 3.1, usaremos o pipeline de ativos. Isso significa que você precisa colocar todos os seus ativos (imagens, javascript, css) em
app/assets
. Antes de 3.1, colocaria aqueles em public/**/*
. No modo de desenvolvimento, o Rails 3.1 irá compilar automaticamente (minificar JS e CSS, transformar imagens para base64 em alguns casos, etc) todos os seus assets, criando um pequeno pacote versionado.
Para um exemplo prático, execute
bundle exec rake assets:precompile
no seu projecto. Dê uma olhada na nova pasta em public/
. Você pode excluí-lo com segurança depois. No modo de produção isso não é automático. Você pode habilitar a compilação automática dos recursos ou executar manualmente
bundle exec rake assets:precompile
antes da implantação. Mais informações sobre o pipeline de ativoshttp://guides.rubyonrails.org/asset_pipeline.html
Útil:https://github.com/dnagir/guard-rails-assets