Виновник был на самом деле в моем инициализаторе Resque:
if Rails.env.staging? || Rails.env.production?
uri = URI.parse ENV['REDISTOGO_URL']
Resque.redis = Redis.new :host => uri.host, :port => uri.port, :password => uri.password
end
Heroku запускает ресурсы: прекомпилируется во время компиляции слагов.Во время прекомпиляции среда загружается, но Heroku не проходит в ENV.Строка разбора URI не выполнена из-за того, что
ENV['REDISTOGO_URL']
равно нулю.Это приводило к сбою rake-задачи assets: precompile.
Решение заключается в добавлении:
config.assets.initialize_on_precompile = false
в файл application.rb.
Это доступно с Rails 3.1.1, и когда установлено значение false, среда больше не будет загружаться при компиляции ресурсов.В большинстве случаев это безопасный выбор.
Спасибо, Нил, за то, что указал мне правильное направление.