[ruby] Sinatra가 각 변경 후 파일을 자동으로 다시로드하도록하는 방법은 무엇입니까?

나는 사용하고있다

# 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_reloadhttps://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

자세한 내용은 승객 문서 를 참조하십시오.


답변

나는 Shotgun 보석을 좋아합니다. 모듈 식 Sinatra 앱을 사용 중이고 config.ru 파일이 있으면 실행하기 쉽습니다.

shotgun config.ru

여기 에서 보석을 확인 하십시오 . 매우 간단하고 구성이 필요하지 않습니다.


답변

Windows에서는 이를 위해 재시작 gem 을 사용하고 있습니다.

restart ruby my_app.rb

또는 랙업 포함 :

restart rackup

자세한 정보는 여기 를 참조 하십시오 . 유용하다고 생각하시면됩니다.