Я постоянно пытался получить ресурсы для предварительной компиляции на моем производственном сервере (простая установка ubuntu с ruby 1.9.2 и Rails 3.1.1, а также пробовал 3.1.2RC с новыми звездочками 2.10) .
"аргумент require_tree должен быть каталогом". Я видел другие проблемы, связанные с этим в стеке, но ситуация не совсем такая, и ни одно из предложенных решений не помогло - например, создать файл-заглушку в подпапке, а затем ссылаться только относительно в этой точке. Не повезло.
И в довершение ко всему, это, конечно, отлично работает на всех машинах разработки (Mac, но с идентичными конфигурациями, даже с подходящим gem для gem), в производственной среде env.
Вот мой /app/assets/javascript/application.js:
//= require ../../views/app/manifest
//= require_self
Ничего особенного. В основном это просто указание на настоящий файл манифеста для области приложения (да, не совсем упакованные ванильные Rails, но ...)
Вот мой тупиковый манифест в моем представлении / 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 должен быть каталогом
Здесь должна быть какая-то крошечная разница, которую я просто не вижу. Любая помощь приветствуется!
.gitkeep
файлов (или.gitignore
файлов в пустые каталоги. - person Undistraction   schedule 28.03.2013