ActionDispatch::Static в рабочей среде Rails

Я ищу использовать ActionDispatch::Static обслуживать статические файлы в директории, отличной от публичной. Он отлично работает в разработке, но я не могу получить те же результаты в производстве.

У меня есть статические файлы в /var/www/mysite.com-static, В инициализаторе я добавил следующее:

Rails.application.config.middleware.insert_after Rack::SendFile, ActionDispatch::Static, '/var/www/mysite.com-static'

Выход из rake middleware как следует:

use Raven::Rack
use Rack::Sendfile
use ActionDispatch::Static
use Rack::Lock
use #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x00000005e61130>
use Rack::Runtime
...

Почему я получаю 404 с на каждой странице, которую я запрашиваю в /var/www/myapp.com-static?

1 ответ

Решение

Я решил эту проблему, добавив промежуточное ПО в приложение Rails config.ru,

require ::File.expand_path('../config/environment',  __FILE__)

# Added the following line
use ActionDispatch::Static, '/var/www/myapp.com-static'

run Rails.application

Это работало, потому что я устанавливал путь для ActionDispatch::Static в инициализаторе, который был загружен после того, как промежуточное программное обеспечение было уже смонтировано. Если бы я правильно настроил мой порядок загрузки, Rails.application.config.middleware тоже бы сработало.

Другие вопросы по тегам