Почему мое приложение rails не работает в рабочей среде, если config.assets.compile = false? - PullRequest
3 голосов
/ 01 апреля 2012

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

Я запустил rake assets: прекомпилировал, это заняло некоторое время и создал несколько файлов в каталоге public / assets /.

Проблемав том, что когда я запускал сервер в рабочей среде, он выдавал ошибку «Извините», и я не мог увидеть ни одной новой строки в производственном журнале, хотя у него были соответствующие разрешения.

В журнале nginx / webrickединственное, что обнаружилось, было:

cache: [GET /] miss

Итак, я попробовал несколько вещей и, наконец, после установки config.assets.compile в значение true, это сработало.

У меня вопрос, почему этополучилось?Это проблемный файл или что-то, что задача прекомпиляции не удалось скомпилировать?

Существует специальный файл CSS (только для IE), который я включил следующим образом:

<!--[if IE ] --><%= stylesheet_link_tag 'ie' %><!-- [endif]-->

Чтодавая ошибку 404.Все остальные файлы были включены с помощью assets / stylesheets / application.css.

Ответы [ 2 ]

3 голосов
/ 01 апреля 2012

Проблема в том, что ваш файл называется ie (а не application). По умолчанию Rails компилирует только application.js и application.css.

Установив config.assets.compile на true, вы включили конвейер активов откат , который подготовил ваш файл ie.css.

Чтобы включить вашу таблицу стилей ie.css в процесс компиляции, вы должны добавить ее следующим образом:

config.assets.precompile += %w(ie.css)
0 голосов
/ 01 апреля 2012

В процессе работы Rails ожидает, что вы прекомпилируете свои ресурсы, а не обслуживаете их динамически.

Вам нужно запустить rake assets:precompile, и Rails создаст статические ресурсы, необходимые для поддержки вашего приложения в работе.Обычно это включает в себя превращение SASS и CoffeeScript в минимизированный / сжатый CSS и JavaScript соответственно.Это предотвращает затраты на компиляцию ваших скриптов / таблиц стилей при каждом запросе, чего вы не хотите делать в производственной среде.

Если вам не хватает одной таблицы стилей, такой как ie.css, которой вы не являетесьобслуживая через конвейер активов, вы можете указать абсолютный путь к нему, чтобы помощники активов не могли его обслуживать из /assets:

<%= stylesheet_link_tag '/stylesheets/ie' %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...