Я постоянно пытался получить ресурсы для предварительной компиляции на моем рабочем сервере (простая установка ubuntu с ruby 1.9 .2 и Rails 3.1.1, а также пробовал 3.1.2RC с новыми звездочками 2.10).
«аргумент require_tree должен быть каталогом». Я видел другие проблемы, связанные с этим в стеке, но ситуация не такая. t точно так же, и ни одно из предложенных решений не помогло - например, создать файл-заглушку в подпапке, а затем ссылаться только относительно в этой точке. Не повезло.
И в довершение всего, конечно, это отлично работает на всех машины для разработки (Mac, но с идентичными конфигурациями, даже подходящие для gem), в производственной среде.
Вот мой / app / assets / javascri pt / application.js:
//= require ../../views/app/manifest
//= require_self
Ничего особенного. В основном просто указываю на настоящий файл манифеста для области приложения (да, не совсем упакованные ванильные Rails, но ...)
Вот мой манифест-заглушка в моем view / admin (/views/app/manifest.coffee.js) :
# = require ./app
# = require_tree ./models
# = require_directory ./views <- or using require_directory, either would work fine.
Как я уже сказал, в dev env вообще никаких проблем. Пайплайн ассетов компилируется на лету, и все отлично. Запускаем, разгребаем активы: прекомпилируем на машине разработчика, тоже без проблем.
Я отправляю его на производственную машину, запускаю тот же самый код и получаю:
аргумент require_tree должен быть каталогом
Здесь должна быть небольшая разница, которую я просто не вижу.Любая помощь приветствуется!
Я столкнулся с той же самой проблемой, которую вы описали. Мой производственный сервер был Heroku (стек кедра). В моем случае проблема заключалась в том, что один из моих:
require_tree ./mobile
указывал на допустимый каталог, но в этом каталоге не было файлов. На dev это не имело значения, но что-то в производственной настройке приводило к ошибке «Аргумент require_tree должен быть каталогом».
Надеюсь, это поможет.