Top Banner
Rack 어플리케이션 작성 개요
47

150120 Rack 어플리케이션 개요

Jul 18, 2015

Download

Engineering

Shim Won
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 150120 Rack 어플리케이션 개요

Rack 어플리케이션 작성 개요

Page 2: 150120 Rack 어플리케이션 개요

이 슬라이드는 크게 11가지 주제를 다룹니다.

Page 3: 150120 Rack 어플리케이션 개요

01. Rack이란 무엇인가? 10. 미들웨어11. 레일즈에서의 Rack 미들웨어

Page 4: 150120 Rack 어플리케이션 개요

01. Rack이란 무엇인가?

Page 5: 150120 Rack 어플리케이션 개요

공식 홈페이지에는 이렇게 적혀있습니다.

Page 6: 150120 Rack 어플리케이션 개요

모듈러 루비 웹서버 인터페이스

쪼갤수 있는 입출력 하는 애

Page 7: 150120 Rack 어플리케이션 개요

HelloRack

Request Response

말은 어려운데 그냥 간단한 웹서버용 인터페이스

Page 8: 150120 Rack 어플리케이션 개요

HelloRack

Request

hello_rack.call(env)

Page 9: 150120 Rack 어플리케이션 개요

HelloRack

Response

[status_code, header, body]

※스테이터스 코드의 종류는 rfc2616 를 보세요.

Page 10: 150120 Rack 어플리케이션 개요

데모

Page 11: 150120 Rack 어플리케이션 개요

call(env)메세지를 이해하는 객체는 모두 Rack이 될 수 있음

(nil, false는 빼고)

ref: https://github.com/macournoyer/thin/blob/master/lib/thin/server.rb#L153

Page 12: 150120 Rack 어플리케이션 개요

여기까지 이해하셨으면

Page 13: 150120 Rack 어플리케이션 개요

아마 이런 생각이 들겁니다.

Page 14: 150120 Rack 어플리케이션 개요

그럼 로그는? URL은?등등..

Page 15: 150120 Rack 어플리케이션 개요

다시 데모

Page 16: 150120 Rack 어플리케이션 개요

이런식으로 만들면 됩니다.

Page 17: 150120 Rack 어플리케이션 개요

레일즈도 시나트라를 포함한 모든 Rack 어플은기본적으로 이렇습니다.

Page 18: 150120 Rack 어플리케이션 개요

조금 복잡할 뿐이죠

Page 19: 150120 Rack 어플리케이션 개요

10. 미들웨어

Page 20: 150120 Rack 어플리케이션 개요

다시한번 이야기하자면

Page 21: 150120 Rack 어플리케이션 개요

모듈러 루비 웹서버 인터페이스

쪼갤수 있는 입출력 하는 애

Page 22: 150120 Rack 어플리케이션 개요

서버와 어플사이에랙을 넣을 수 있다는 이야기죠

Page 23: 150120 Rack 어플리케이션 개요

서버와 어플 사이의 어플

여기서는 thin HelloRack

Page 24: 150120 Rack 어플리케이션 개요

MiddleRack

Request Response

HelloRack

Page 25: 150120 Rack 어플리케이션 개요

데모

Page 26: 150120 Rack 어플리케이션 개요

이런식으로 하면 됩니다.

Page 27: 150120 Rack 어플리케이션 개요

그냥 콜스택이 하나 늘어나는 것 뿐

Page 28: 150120 Rack 어플리케이션 개요

11. 레일즈에서의 Rack 미들웨어

Page 29: 150120 Rack 어플리케이션 개요

어디서 쓰고 있나?

Page 30: 150120 Rack 어플리케이션 개요

$ bundle exec rake middleware

Page 31: 150120 Rack 어플리케이션 개요

$ bundle exec rake middleware

Page 32: 150120 Rack 어플리케이션 개요

어떻게 추가 하나?

Page 33: 150120 Rack 어플리케이션 개요

config/application.rb

ref: http://guides.rubyonrails.org/rails_on_rack.html

Page 34: 150120 Rack 어플리케이션 개요

어떤 경우 만드는가?

Page 35: 150120 Rack 어플리케이션 개요

DB 연결관련파라메터 처리케쉬예외처리로깅

모든 리퀘스트에서 사용하는

Page 36: 150120 Rack 어플리케이션 개요

대부분은 레일즈에서 이미 알아서 해줍니다.

Page 37: 150120 Rack 어플리케이션 개요

$ bundle exec rake middleware

케쉬

예외처리

DB연결

Page 38: 150120 Rack 어플리케이션 개요

rails, rack, sinatra 에서 만들어준 것 이외의 커스텀 rack을 쓰는 걸 딱 두번 봤는데

Page 39: 150120 Rack 어플리케이션 개요

01. 독립적인 어플리케이션을 레일즈에 마운트 할때

ref: http://faye.jcoglan.com/ruby.html

Page 40: 150120 Rack 어플리케이션 개요

10. 트렌젝션을 사용하지 못하도록 강제하는 경우

ref: http://blog.livedoor.jp/sonots/archives/38797925.html

Page 41: 150120 Rack 어플리케이션 개요

10은 쓸만한 경우지만 01의 경우는 nignx에서 설정을 하는게 더 좋습니다.

ref: http://stackoverflow.com/questions/15711053/nginx-passenger-to-serve-rails-apps-in-different-sub-uris

Page 42: 150120 Rack 어플리케이션 개요

Page 43: 150120 Rack 어플리케이션 개요

- 헬퍼 오브젝트 - Rack::Request - Rack::Response- Rack::Builder(라우터?)- Rack::Static(파일 서버)- Rack::Auth(인증하기) - 기타등등..

이 슬라이드에서 다루지 않은 것들

Page 44: 150120 Rack 어플리케이션 개요

소스 코드가 길지 않으니 한번 읽어보세요.

https://github.com/rack/rack/tree/master/lib/rack

Page 45: 150120 Rack 어플리케이션 개요

들어주셔서 감사합니다.

Page 46: 150120 Rack 어플리케이션 개요

질문 받아도 될까요?

Page 47: 150120 Rack 어플리케이션 개요

참고 자료

http://guides.rubyonrails.org/rails_on_rack.html http://m.onkey.org/ruby-on-rack-1-hello-rack http://faye.jcoglan.com/ruby.html https://github.com/rack/rack https://github.com/rack/rack-contrib https://github.com/sinatra/sinatra-contrib http://blog.livedoor.jp/sonots/archives/38797925.html http://hawkins.io/2012/07/rack_from_the_beginning/