Поэтому я не хочу, чтобы эти изображения в конвейере ресурсов (в противном случае мне придется предварительно компилировать ресурс при каждом обновлении изображений и перезапускать сервер, верно?).
Да. Как и сгенерированные пользователем изображения, они не должны быть в конвейере, а просто храниться в /public
или, что еще лучше, в облачной CDN, такой как S3. Конвейер ресурсов предназначен для ресурсов, которые можно скомпилировать во время развертывания.
Возможно, вы захотите использовать ActiveStorage или CarrierWave, которые могут обрабатывать изменение размера изображения, а также заполнители вместо повторного изобретения колеса.
Заметьте, вы можете по-прежнему использовать Rails-файлы из /public
, которые не являются частью конвейера ресурсов. Если вы хотите пример, попробуйте localhost:3000/robots.txt
. Это действительно полезно при разработке, поскольку у вас, вероятно, нет локальной настройки NGINX или Apache для обслуживания файлов.
Как отключить рельсы для обслуживания файлов stati c, зависит от вашей версии Rails. Обычно это настройка в config/environments/*.rb
. Конфигурационные файлы для последних версий на самом деле по умолчанию имеют значение false для производства, так что вместо них Apache / NGINX обслуживает файлы.
Этот параметр также применяется для всего каталога /public
. Вы не можете просто настроить Rails так, чтобы он не обслуживал один каталог.
Rails.application.configure do
config.serve_static_files = false
end
Rails.application.configure do
# Disable serving static files from the `/public` folder by default since
# Apache or NGINX already handles this.
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
end
Это из сгенерированного файла config/environments/production.rb
, и по умолчанию вы можете видеть значение false, если не задано env var RAILS_SERVE_STATIC_FILES
(фактическое значение env var не имеет значения).