Вам нужно два приложения. Я делаю именно то, что описано в этом вопросе. Я хотел больших потоковых загрузок, и, поскольку Rack записывает загрузки во временный файл, прежде чем передать их в обработчик, это невозможно сделать с помощью Rails.
Node.js, с другой стороны, делает это прекрасно. Итак, есть два приложения Heroku, веб-приложение Rails и веб-приложение Node.js (Express). Веб-приложение Rails использует SWFUpload в качестве решения на стороне клиента. Приложение Rails и приложение Node.js имеют секретный ключ в качестве переменной конфигурации Heroku. Когда пришло время для загрузки пользователем, Javascript на стороне клиента запрашивает URL загрузки с сервера Rails. Сервер Rails формирует URL для загрузки с параметром Expires и вычисляет подпись с использованием секретного ключа. Клиентский обработчик Javascript передает этот URL-адрес в SWFUpload (свойство upload_url). Пользователь выбирает файлы для загрузки, и SWFUpload начинает публиковать их в upload_url. Приложение Node.js проверяет, что срок действия URL-адреса не истек и что подпись действительна. Обрабатывает данные формы с огромной библиотекой.
Еще одна деталь. Flash требует, чтобы приложение Node.js обслуживало файл crossdomain.xml, разрешающий межсайтовый запрос.
Мое приложение Node.js не касается базы данных; но если бы это было так, я бы поделился DATABASE_URL, как было предложено ранее. Обратите внимание, что вы не можете поделиться DATABASE_URL за пределами Heroku, если у вас нет выделенной БД. DATABASE_URL для общих баз данных недоступны извне Heroku (в отличие от некоторых других служб, таких как RedisToGo).