Mam aplikację Rails, którą próbuję przetestować w środowisku produkcyjnym. Uruchomiłem, RAILS_ENV=production rake assets:precompile
który wygenerował wszystkie moje aktywa w / public / asset. Problem polega na tym, że po uruchomieniu aplikacji RAILS_ENV=production rails s thin
otrzymuję:
ActionController::RoutingError (No route matches [GET] "/assets/application-eff78fd67423795a7be3aa21512f0bd2.css"):
Ten plik istnieje jednak pod adresem /public/assets/application-eff78fd67423795a7be3aa21512f0bd2.css
.
Jakieś przemyślenia, dlaczego to rozumiem RoutingError
?
źródło
thin
na mojej maszynie deweloperskiej. Kompilowałem zasoby, aleapplication.css
był pusty, a dziennik serwera podał błąd OP.config.serve_static_files
.config.serve_static_assets
jest przestarzały i zostanie usunięty w Railsach 5.Dodając do tego, co powiedział Ryan powyżej, przewodnik dotyczący potoku aktywów Rails opisuje, jak skonfigurować Apache lub nginx, aby obsługiwał statyczne zasoby za Ciebie.
http://guides.rubyonrails.org/asset_pipeline.html
Naprawdę powinieneś skonfigurować nginx lub Apache, aby obsługiwał zasoby statyczne, ponieważ są one znacznie lepiej zoptymalizowane do tego zadania niż kundel / cienki / jednorożec.
źródło
Właśnie rozwiązałem ten sam problem. W moim przypadku odpowiedź Ryana nie była pomocna. Bratsche wskazał na prowadnice szyn, niestety to też mi się nie udało. Jednak zasób był pomocny. Więc wziąłem stamtąd konfigurację Nginx i dodałem dyrektywę root , wskazując na katalog publiczny. Bez tego to nie działa.
Zrestartuj Nginx i to wszystko.
źródło
Rzeczywiście, nie trzeba było modyfikować żadnych domyślnych konfiguracji. Po prostu ponownie skompiluj plik zasobów .
usunąć publiczne / aktywa
kompilacja zasobów
źródło
Rails 4.2 dodał / zmienił tę linię w twoich plikach config / environment / staging.rb i production.rb:
Jeśli RAILS_SERVE_STATIC_FILES nie jest ustawione, a jesteś zasobem usługowym z serwera Rails (tak jak w przypadku Unicorn), to domyślnie będzie to „false” i wystąpi błąd RoutingError.
To łatwe rozwiązanie:
źródło
W szynach 5
config.serve_static_files
opcja się zmieniła, więc teraz musisz miećdo obsługi zasobów lokalnie.
źródło
wypróbuj poniższy kod:
config / environment / production.rb
następnie uruchom polecenie:
następnie wypchnij wszystkie kompilowane pliki i plik manifestu na serwer.
źródło
Używam mina + puma + nginx do wdrożenia mojej aplikacji Rails 5
sprawdź config / environment / production.rb
NGINX już to obsługuje , skonfiguruj to poprawnie
wszystko będzie dobrze działać.
źródło
Jeśli ktoś dostanie się tutaj z tym samym błędem w środowisku testowym co ja, oto co mi pomogło:
następnie:
znaleźć
spring server
proces i jego PID, a następnie zabić go za pomocą:źródło