나는 사용하고있다
# my_app.rb
load 'index.rb'
이렇게 서버를 시작하십시오
ruby my_app.rb
하지만 인덱스 페이지에서 변경 한 내용을 다시로드하지 않습니다.
내가 여기서 놓친 것이 있습니까?
답변
참고 항목 시나 FAQ를 ,
“변경시 Sinatra 앱을 다시로드하려면 어떻게해야합니까?”
우선 Ruby에서 프로세스 내 코드를 다시로드하는 것은 어렵고 모든 시나리오에서 작동하는 솔루션을 갖는 것은 기술적으로 불가능합니다.
그렇기 때문에 out-of-process 다시로드를 수행하는 것이 좋습니다.
아직 설치 하지 않은 경우 먼저 재실행 을 설치해야합니다 .
$ gem install rerun
이제 다음과 같이 Sinatra 앱을 시작하면 :
$ ruby app.rb
다시로드하려면 다음과 같이하면됩니다.
$ rerun 'ruby app.rb'
예를 들어 랙업을 사용하는 경우 대신 다음을 수행하십시오.
$ 재실행 ‘rackup’
당신은 아이디어를 얻습니다.
여전히 진행중인 재로드를 원하면을 확인하십시오
Sinatra::Reloader
.
답변
gem install sinatra-reloader
require 'sinatra'
require 'sinatra/reloader'
참고 : 수동으로 다시로드해야하는 사용자 정의 파일이 아닌 sinatra 핸들러 (및 일부 sinatra 서버 구성 명령) 만 다시로드합니다.
구년 후 UPD가 : 그것을 사용하여 다른 파일을 다시로드 이미 수 있습니다 것 같아 also_reload
, dont_reload
그리고 after_reload
– https://github.com/sinatra/sinatra/pull/1150
답변
rerun
보석을 사용할 수 있습니다 .
gem install rerun
rerun 'ruby app.rb'
또는 랙업을 사용하는 경우
rerun 'rackup'
답변
gem install sinatra-reloader
require 'sinatra/base'
require "sinatra/reloader"
class MyApp < Sinatra::Base
register Sinatra::Reloader
get '/' do
"Hello Testing1!"
end
end
환경 변수를 개발로 설정하고 gem을 조건부로로드 할 수 있습니다.
답변
Passenger Standalone으로 애플리케이션을 실행할 때 tmp/always_restart
파일을 생성하기 만하면 됩니다.
$ touch tmp/always_restart.txt
자세한 내용은 승객 문서 를 참조하십시오.