Rails 3.1. Развертывание для производства (с Apache и пассажиром). Проблемы с активами

Rails 3.1 изменил способ обработки конвейера активов и вызывает проблемы при развертывании на производство.

Я использую Apache и Passenger, которые, похоже, работают нормально.

Моя постановка настроена так (пока).

# congif/environments/production.rb
config.cache_classes = false
config.consider_all_requests_local       = true
config.action_controller.perform_caching = true
config.serve_static_assets = false
config.assets.compress = true
config.assets.compile = false
config.assets.digest = true
config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache

Я запускаю rake assets: прекомпиляция на Ubuntu и запуск сервера. И ничего. Ни одно из моих изображений не загружается.

Легендарное поле "Я не могу найти изображение в этом URL".

Я запускаю рейк-активы: прекомпиляция на CentOS и запуск сервера. И... ошибки разрешения.

*Error Compiling CSS Asset*
Errno::EACCESS: Permission Denied - [app path]/tmp/cache/assets/E95
[path to RVM Ruby]/fileutils.rb:243:in 'mkdir'

Я не могу заставить его сдвинуться с места. Любая помощь приветствуется. Спасибо!

UPDATE

Это решение работало каждый раз для меня:

Сначала очистите свои активы

rm -rf public/assets

и

rake assets:clean RAILS_ENV=production

Во-вторых, в # production.rb change

config.assets.compile = false

к

config.assets.compile = true

В-третьих, выполните предварительную компиляцию ваших активов.

rake assets:precompile RAILS_ENV=production

В-четвертых, в # production.rb change

config.assets.compile = true

назад к

config.assets.compile = false

В-пятых, перезагрузите сервер, выполнив:

touch tmp/restart.txt

В-шестых, ограничьте разрешения для вновь созданных активов, выполнив эту команду

chmod -R 777 public/assets

В-седьмых, отмечайте!!

Ответ 1

Это простая проблема с разрешением. Дайте серверу/демону право создавать файлы в [app_path]/tmp рекурсивно.

Предполагая, что ваш серверный процесс выполняется с помощью пользователя www-data, вы делаете это с помощью:

cd APP_PATH
chmod -R u+w tmp

и если каталог не принадлежит пользователю, вам необходимо изменить право собственности:

chown -R www-data tmp

Ответ 2

Попробуйте создать public/assets через sudo или попробуйте выполнить rvmsudo rake assets:precompile - по существу, он не сможет создать каталог на вашем сервере — следовательно, ошибка.

Ответ 3

В Windows 8:

  • Удалить ссылки на таблицы стилей
  • Перезапустить производство
  • Перейдите на страницу с уязвимостью, используя браузер
  • Добавить ссылки таблиц стилей назад
  • Перезапустить производство
  • Работал для меня!

Ответ 4

Ваше обновленное решение не сработало для меня. Я на рельсах 4.2, а css и js работают только тогда, когда я устанавливаю config.serve_static_files = true (это не рекомендуется, но это единственный способ заставить все работать здесь).