루비 Sinatra 의 간단한 예제 코드는 아래와 같습니다.
위의 코드를 실행하면 바로 웹 서버가 실행되는데, 이 동작은 약간 이상합니다.
분명히 라우팅만 지정했을 뿐이고, 서버를 실행하는 코드는 아무데도 없습니다. 파일의 끝이 나와서 프로그램이 꺼져야 하는데, 꺼지지 않고 계속 서버가 실행됩니다.
이는 at_exit를 이용한 트릭이며, 사용자가 직접 서버를 켜는 코드를 작성하지 않아도 되도록 도와줍니다.
at_exit는 앱이 종료될 때 실행되는 콜백을 지정하는 함수입니다. 단순히 블록 하나만 넘겨주면 되며, 사용법은 아래와 같습니다.
at_exit를 여러번 실행하면, 콜백이 교체되는것이 아니라 '추가'됩니다. 아래의 코드는 RunServer를 3번 실행시킵니다.
위에서 말했듯이 Sinatra는 이 방법을 이용한 트릭을 사용합니다. 'get' 등을 호출하면 어딘가에 정보를 저장하고 있다가, at_exit에서 서버를 실행하는 것 입니다.
'Ruby' 카테고리의 다른 글
[aws] The request signature we calculated does not match the signature you provided. (0) | 2016.01.18 |
---|---|
[Ruby] autoload (0) | 2016.01.04 |
[Ruby] SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError) (2) | 2015.12.16 |
[Ruby] 로 jenkins & LINE 원격 환경 구성하기 (4) | 2015.12.07 |
[Ruby] binding_of_caller (0) | 2015.11.27 |