#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
Комментарии:
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.