본문 바로가기

Ruby

[Sinatra] 소스가 변경되면 자동으로 반영되도록 하기 기본적으로 템플릿 파일들은 변경하여도 서버 재시작 없이 적용이 되지만, rb 파일을 변경하였을 경우에는 서버 재시작을 해야 반영이 된다.Sinatra에서 제공하는 해결책은 rerun gem을 이용하는것인데 (http://www.sinatrarb.com/faq.html) (https://github.com/alexch/rerun)이는 윈도우 환경에서 정상적으로 동작하지 않는다.C:/Ruby22/lib/ruby/gems/2.2.0/gems/rerun-0.11.0/lib/rerun/runner.rb:152:in `fork': fork() function is unimplemented on this machine (NotImplementedError) from C:/Ruby22/lib/ruby/gems/2.2... 더보기
[Ruby] autoload http://ruby-doc.org/core-2.1.0/Module.html#method-i-autoload autoload는 클래스가 사용되는 시점에 해당 클래스가 포함된 rb 파일을 lazy 하게 로드할 수 있도록 하는 기능을 제공합니다. autoload? 메소드를 사용하면, 특정 클래스에 대해 autoload 가 지정된 파일 경로를 가져올 수도 있습니다. 더보기
[Ruby] at_exit 루비 Sinatra 의 간단한 예제 코드는 아래와 같습니다. require 'sinatra' get '/' do "Hello" end 위의 코드를 실행하면 바로 웹 서버가 실행되는데, 이 동작은 약간 이상합니다. 분명히 라우팅만 지정했을 뿐이고, 서버를 실행하는 코드는 아무데도 없습니다. 파일의 끝이 나와서 프로그램이 꺼져야 하는데, 꺼지지 않고 계속 서버가 실행됩니다. 이는 at_exit를 이용한 트릭이며, 사용자가 직접 서버를 켜는 코드를 작성하지 않아도 되도록 도와줍니다. at_exit는 앱이 종료될 때 실행되는 콜백을 지정하는 함수입니다. 단순히 블록 하나만 넘겨주면 되며, 사용법은 아래와 같습니다. at_exit do puts "Run Server" end at_exit를 여러번 실행하면, 콜백.. 더보기