Подтвердить что ты не робот

"require_tree аргумент должен быть каталогом" rails 3.1.1 precompile assets

Я был круглый и здесь, пытаясь получить активы для предварительной компиляции на моем производственном сервере (простая установка ubuntu с ruby ​​1.9.2 и Rails 3.1.1 и попытка 3.1.2RC с новыми звездочками 2.10 также).

"require_tree аргумент должен быть каталогом". Я видел другие проблемы, связанные с этим в стеке, но ситуация не совсем то же самое, и ни одно из предлагаемых решений не помогло - например, создать файл-заглушку в подпапке, а затем ссылаться только относительно на эту точку. Не повезло.

И, конечно же, это отлично работает на всех машинах разработки (Mac, но с идентичными конфигурациями, даже для сопоставления драгоценных камней для драгоценных камней), в производстве env.

Вот мой /app/assets/javascript/application.js:

//= require ../../views/app/manifest
//= require_self

Не так много. В основном просто указывая на реальный файл манифеста для области приложения (да, не совсем в коробке с ванилью Rails, но...)

Вот мой манифест stub в моих представлениях /admin (/views/app/manifest.coffee.js):

# = require ./app
# = require_tree ./models
# = require_directory ./views <- or using require_directory, either would work fine.

Как я уже сказал, в dev env нет никаких проблем. Консоль активов компилируется "на лету", и все отлично. Запуск, рейк-активы: прекомпиляция на dev-машине, никаких проблем.

Я отправляю его на производственную машину и запускаю тот же самый код, и я получаю:

require_tree аргумент должен быть каталогом

Здесь должно быть крошечное крошечное различие, которое я просто не вижу. Любая помощь будет высоко оценена!

4b9b3361

Ответ 1

Я столкнулся с такой же проблемой, которую вы описали. Мой сервер производства был Heroku (кедровый стек). В моем случае проблема заключалась в том, что один из моих:

require_tree ./mobile

Указывал на законный каталог, но в этом каталоге не было файлов. На dev это не имело значения, но что-то о настройке производства приводило к ошибке: "require_tree должен быть каталогом".

Надеюсь, это поможет.

Ответ 2

require_tree должен предоставить существующую папку, но git не сохраняет пустые папки, поэтому при развертывании на heroku эти пустые папки не существуют.

один трюк состоит в том, чтобы добавить пустой файл .keep в папки, которые вы хотите сохранить.