Я развертываю приложение Rails 3.1 в стеке Heroku Cedar. С Heroku Cedar и Rails 3.1 вы можете самостоятельно скомпилировать ресурсы, позволить Heroku скомпилировать их, когда вы нажимаете (во время «компиляции слагов»), или сделать так, чтобы они были скомпилированы точно во время работы приложения. Бег. Я хочу сделать средний вариант, позволяя Heroku предварительно скомпилировать ресурсы.
Когда Heroku запускает задачу assets: precompile, она выдает ошибку "не удалось подключиться к серверу" , потому что приложение пытается подключиться к базе данных, но на этом этапе компиляции слагов база данных недоступна. Отсутствие подключения к базе данных ожидается и неизбежно на этом этапе. Я ищу способ пройти дальше, потому что соединение с базой данных не имеет решающего значения для прекомпиляции ресурсов.
Часть моего приложения, которая пытается подключиться к базе данных, - это Devise. В файле rout.rb есть строка devise_for :users
, которая хочет посмотреть на модель User.
Я мог бы просто написать грабли, которые заглушают devise_for и делают это предварительным требованием ресурсов: precompile. Я думаю, что это решило бы мою проблему, но Я ищу более универсальное решение , которое я мог бы использовать в любом Rails 3.1 приложении с этой проблемой на Heroku.
Есть ли что-нибудь в этом роде или вы можете придумать что-нибудь, что заставляет глушить ошибки соединения с базой данных, в то время как приложение все еще достаточно для генерации маршрута и пути ресурса?
Очевидно, что если приложению нужно читать / записывать данные во время запуска, мы не можем это заглушить, но можем ли мы подделать каждую модель ActiveRecord автоматически?