Rails компилирует ресурсы как с хешем md5, так и без него. Почему?
Я относительно новичок в RoR, и мне любопытно, почему Rails компилирует активы как с хешем md5, так и без него для производства?
я бегу bundle exec rake assets:clean
затем bundle exec rake assets:precompile
Мой файл production.rb:
MyApp::Application.configure do
# Code is not reloaded between requests
config.cache_classes = true
# Full error reports are disabled and caching is turned on
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
# Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_assets = false
# Compress JavaScripts and CSS
config.assets.compress = true
# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = false
# Generate digests for assets URLs
config.assets.digest = true
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx
config.assets.precompile += %w(tos.js, tos.css)
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
end
Мое приложение работает с файлами с хэшами в именах, и так и должно быть в моем случае:)
Итак, у меня есть два вопроса здесь:
1) Почему это происходит при компиляции?
Rails компилирует активы как с хешем md5, так и без него для производства
2) Для чего нужны эти файлы (без хешей)?
Может быть, я чего-то не понимаю, поэтому, может, кто-нибудь объяснит.
1 ответ
Это происходит потому, что вы можете получить доступ к файлам, не зная отпечаток MD5 (например, в приложении, не являющемся rails, или файл в приложении rails, который не скомпилирован или не запущен стеком rails (например, 500). /502 страница ошибки состояния.) В этом случае вам придется компилировать ресурсы, а затем изменять ссылки css/js в статических HTML-файлах каждый раз, когда вы обновляете код (что приводит к изменению хеша MD5).
Таким образом, вместо этого rails создает 2 копии каждого файла ресурсов, один с отпечатком пальца в имени файла, а другой без (например, application-731bc240b0e8dbe7f2e6783811d2151a.css и application.css). Версия с отпечатками пальцев, очевидно, предпочтительнее (см. " Что такое дактилоскопия и почему я должен заботиться" в руководстве по конвейеру активов рельсов). Но непереваренная версия существует как запасной вариант.
В качестве заключительной мысли по этому вопросу я бы прочитал следующий запрос на извлечение рельсов git-репозитория rails: https://github.com/rails/rails/pull/5379 где они обсуждают за и против не -переваренные имена файлов и возможность отключить их компиляцию.
НТН