Rails не использует Rack::Static
, у него есть собственная версия, ActionDispatch::Static
. Вы должны увидеть это, если вы запустите rake middleware
.
Это добавляется только в стек промежуточного программного обеспечения Rails , если config.serve_static_assets
имеет значение true . Этот параметр по умолчанию имеет значение true , но сгенерированный по умолчанию config/environments/production.rb
отключается, если .
Идея состоит в том, что во время разработки у вас есть простой отдельный процесс, который вы можете запустить и проверить, что все работает и где производительность не является проблемой, но при развертывании в производство вы настраиваете свой веб-сервер (обычно Apache или Nginx) на обслуживать статические файлы, так как в этом дело гораздо лучше, чем в Ruby.
Если вы используете Heroku, их последний стек Cedar не использует отдельный веб-сервер для статических файлов, поэтому в рамках процесса deploy они внедряют плагин Rails для обслуживания статических ресурсов . Все, что делает этот плагин, устанавливается serve_static_assets
в true.