2012-03-30 3 views

답변

18

레일즈는 Rack::Static을 사용하지 않으며 자체 버전이 ActionDispatch::Static입니다. rake middleware을 실행하면 표시됩니다.

이것은 레일즈 미들웨어 스택 if config.serve_static_assets is true에만 추가됩니다. 이 설정은 defaults to true이지만 기본값은 config/environments/production.rb turns if off입니다.

아이디어는 개발하는 동안 모든 것이 작동하고 성능이 문제가 아닌 간단한 단일 프로세스를 실행할 수 있지만 프로덕션 환경에 배포 할 때 웹 서버 (일반적으로 Apache 또는 Nginx) 정적 파일을 제공하는 것이 Ruby보다 훨씬 낫습니다.

Heroku를 사용하는 경우 최신 Cedar 스택은 정적 파일 용으로 별도의 웹 서버를 사용하지 않으므로 deploy process 부분에 Rails plugin to serve static assets이 삽입됩니다. 이 플러그인은 모두 serve_static_assets을 true로 설정합니다.

6

에 따라 다릅니다. 앱을 실행하기 위해 phusion passenger과 같은 것을 사용하는 경우, 기본 동작은 Apache를 직접 사용하고 정적 컨텐츠에 대해 레일을 건너 뛰는 것입니다. webrick (레일 서버)을 사용하는 경우 정적 서빙을하기 위해 훨씬 더 많은 레일/랙 코드를 사용하게됩니다.

프로덕션 모드에서 apache/nginx를 사용하는 경우 기본적으로 아파치가 모든 정적 콘텐츠를 제공하도록하기 때문에 애플리케이션에서 rake assets:precompile을 실행해야 apache에서 시작할 수 있습니다 , 또는 정적 컨텐츠는 아파치가 신속하게 그것을 얻을 수 있고 준비가되어있는 형태로 있어야 할 곳에 있어야한다.

관련 문제