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
тоже бы сработало.