"Аргумент require_tree должен быть каталогом" - PullRequest
28 голосов
/ 17 ноября 2011

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

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

И в завершение, конечно, это прекрасно работает на всех машинах разработки (mac, но с одинаковыми конфигами, даже совпадающими с gem для gem), в рабочей среде

Вот мой /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 должен быть каталогом

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

Ответы [ 2 ]

85 голосов
/ 18 декабря 2011

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

require_tree ./mobile

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

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

17 голосов
/ 11 мая 2014

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

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

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