2012-03-30 11 views

Odpowiedz

18

Szyny nie używają Rack::Static, mają własną wersję, ActionDispatch::Static. Powinieneś go zobaczyć, jeśli uruchomisz rake middleware.

Zostało to dodane tylko do stosu oprogramowania warstwy Rails if config.serve_static_assets is true. To ustawienie: defaults to true, ale domyślnie wygenerowano config/environments/production.rb turns if off.

Pomysł polega na tym, że w trakcie rozwoju istnieje prosty pojedynczy proces, który można uruchomić i sprawdzić, czy wszystko działa i gdzie wydajność nie jest problemem, ale po wdrożeniu do produkcji konfiguruje się serwer WWW (zazwyczaj Apache lub Nginx) do obsługi plików statycznych, ponieważ jest o wiele lepiej niż Ruby.

Jeśli korzystasz z Heroku, ich najnowszy stos cedrowy nie używa oddzielnego serwera WWW dla plików statycznych, więc jako część deploy process wstrzykuje Rails plugin to serve static assets. Cała ta wtyczka nie jest ustawiana jako true na serve_static_assets.

6

To zależy. Jeśli do uruchomienia aplikacji używasz czegoś w stylu: phusion passenger, domyślnym zachowaniem jest używanie Apache bezpośrednio i pomijanie szyn dla dowolnej statycznej zawartości. Jeśli używasz Webrick (serwera rails), to użyje on znacznie więcej rails/rack code do wykonania statycznej obsługi.

Uwaga: jeśli korzystasz z apache/nginx z pasażerem: w trybie produkcyjnym, ponieważ domyślnie, aby apache obsługiwał całą zawartość statyczną, musisz uruchomić aplikację rake assets:precompile przed uruchomieniem jej w apache lub statyczna zawartość nie jest umieszczana w miejscu, w którym musi być apache, aby szybko ją uzyskać, w postaci gotowej do użycia.

Powiązane problemy