기본적으로 템플릿 파일들은 변경하여도 서버 재시작 없이 적용이 되지만,
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 파일을 변경해서 다시 요청을 시도해보면 정상적으로 리로드가 되는걸 확인 가능하다.


Posted by pjc0247
TAG Ruby, sinatra

루비의 yield 문을 이용하여 템플릿 안에 템플릿을 렌더링하는것을 만들어볼 수 있습니다.

이러한 방법은 전체 레이아웃과, 각각의 콘텐츠의 레이아웃을 분리시킬 때 유용합니다.


한개의 중첩 안에 여러개의 템플릿을 사용할 때는 아래와 같이 이용합니다.
yield에 렌더링해야 하는 템플릿의 타입을 지정합니다.


Posted by pjc0247