Как сделать так, чтобы «assets: precompile» НЕ загружали базу данных? (Rails) - PullRequest
3 голосов
/ 06 февраля 2012

Я развертываю свое приложение Rails на Heroku (Cedar), и у меня было 3 варианта предварительной компиляции моих ресурсов, и я выбрал вариант, когда Heroku предварительно компилирует мои ресурсы при развертывании.

КогдаЯ нажал, я получил ошибку, что он не может получить доступ к моей базе данных (во время предварительной компиляции). Итак, как сделать так, чтобы Rails не подключался к базе данных во время предварительной компиляции? Я не знаю, почему она установлена ​​в первую очередь, потому что я не могу представить сценарий, в котором прекомпиляции потребуется доступ к базе данных.

Я видел где-то решение, чтобы отключить инициализацию приложения при прекомпиляции, что достигается добавлением следующего в application.rb (установка его в средах / production.rb не работает):

config.assets.initialize_on_precompile = false

Я попытался добавить эту строку, и она работает, но я не знаю, является ли это хорошим решением.Разве это не создаст некоторые плагины, которые вы потенциально могли бы использовать для ресурсов, не загружаемых во время предварительной компиляции, что повлияет на конечный результат?

Ответы [ 2 ]

1 голос
/ 13 ноября 2012

То, что вы делаете, это правильный путь. Если вы не используете модели / что-либо еще, что фактически обращается к базе данных в ваших активах, тогда вам это не нужно. Единственный раз, когда вам нужно будет инициализировать ваше приложение, это если вы делаете что-то вроде этого: (Полностью надуманный пример, но вы можете видеть, к чему я клоню)

/* In some css file */
.some_class{
    #{User.find(1).avatar_url}
}
0 голосов
/ 06 февраля 2012

Если вы включите Heroku Labs (http://devcenter.heroku.com/articles/labs-user-env-compile), вы сможете получить доступ к вашей БД во время развертывания, что прекрасно работает.

Вы используете Devise? Это, как правило, является причиной случайного доступа к БД при прекомпиляции ресурсов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...