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

#ruby-on-rails #ruby #ruby-on-rails-3 #ruby-on-rails-4 #rails-api

#ruby-on-rails #ruby #ruby-on-rails-3 #ruby-on-rails-4 #rails-api

Вопрос:

Я предварительно скомпилировал ресурсы в рабочей среде, но приложение не может загрузить ресурсы. Мое приложение развернуто на AWS EC2

введите описание изображения здесь

Я проверил на сервере в папке public / assets, что application.css присутствует. введите описание изображения здесь но все равно там написано об ошибке 404.

Моя конфигурация production.rb

введите описание изображения здесь

Мои настройки nginx.conf следующие: введите описание изображения здесь

Комментарии:

1. Что за среда является «производственной» (heroku, aws и т.д.)

2. Он развернут на AWS ec2

3. Как выглядит конфигурация вашего веб-сервера (nginx?)?

4. Я не уверен, где мне это искать?

5. Это был бы файл nginx.conf, вероятно, в вашей папке / config .

Ответ №1:

У меня была такая же проблема

установить config.assets.compile = True

У меня это работает.

Ответ №2:

404 основан на этой строке в вашей конфигурации: config.serve_static_files = true . Это может быть неправильное имя в зависимости от вашей версии rails. Я полагаю, что этот параметр был назван config.serve_static_assets в Rails до версии 5.

Если у вас нет сервера (nginx / etc), то вы хотите, чтобы этот параметр был true. В противном случае вам необходимо перенастроить ваш сервер так, чтобы он указывал на ваш каталог / public, и убедиться, что rake assets:precompile он успешно выполняется.

Комментарии:

1. У меня есть сервер nginx на ec2. должен ли я сделать это true или false?

2. Установите для него значение false. «true» означает, что rails будет обслуживать файлы, «false» означает, что файлы будет обслуживать что-то другое (nginx). Но вы также должны убедиться, что ваша конфигурация nginx указывает на «общедоступный» каталог вашего приложения rails.

3. Большое спасибо @RiptheJacker. Я проверил свой файл nginx.conf и указал корневой каталог с правильным общедоступным путем, и это решило проблему.

Ответ №3:

Проблема заключалась в неправильной конфигурации корневого пути в nginx. таким образом, активы не указывали на неправильный путь.

Я изменил в nginx.conf:

от root /home/deploy/appname/public до root /home/deploy/appname/current/public

И в production.rb

config.serve_static_assets = true Для config.serve_static_assets = false

Ответ №4:

Я сделал то же самое, что и вы:

 root /home/deploy/appname/public root  => /home/deploy/appname/current/public
  

И это работает для меня. С той единственной разницей, что я оставил файл config/production.rb таким:

 config.public_file_server.enabled = true

config.assets.compile = true
  

Я использую Rails 5.