본문 바로가기

Ruby/Sinatra

[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.0/gems/rerun0.11.0/lib/rerun/runner.rb:152:in `start'

        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rerun0.11.0/lib/rerun/runner.rb:9:in `keep_running'

        from C:/Ruby22/lib/ruby/gems/2.2.0/gems/rerun-0.11.0/bin/rerun:12:in `<top (required)>'

        from C:/Ruby22/bin/rerun:23:in `load'

        from C:/Ruby22/bin/rerun:23:in `<main>'


맥 또는 리눅스 환경에서는 rerun을 이용하여 해결할 수 있겠지만, 윈도우에서는 다른 방법을 사용해야 한다.


gem install sinatra-reloader


require 'sinatra'
require 'sinatra/reloader'


require 쪽에 적어주기만 하면 알아서 적용되고, rb 파일을 변경해서 다시 요청을 시도해보면 정상적으로 리로드가 되는걸 확인 가능하다.


'Ruby > Sinatra' 카테고리의 다른 글

[Sinatra] yield 를 이용해 중첩된 템플릿 사용하기  (0) 2016.01.12