120

私は使っている

# my_app.rb
load 'index.rb'

このようにサーバーを起動します

ruby my_app.rb

しかし、インデックスページで行った変更をリロードすることはありません。
ここで何か見逃しましたか?

4

9 に答える 9

208

シナトラ FAQを参照してください。

「変更時に Sinatra アプリをリロードするにはどうすればよいですか?」

まず第一に、Ruby でのインプロセス コードのリロードは難しく、すべてのシナリオで機能するソリューションを用意することは技術的に不可能です。

これが、プロセス外のリロードを行うことをお勧めする理由です。

まだ再実行していない場合は、最初に再実行をインストールする必要があります。

 $ gem install rerun

Sinatra アプリを次のように起動すると:

$ ruby app.rb

リロードのためにしなければならないことは、代わりにこれを行うことだけです:

$ rerun 'ruby app.rb'

たとえば、ラックアップを使用している場合は、代わりに次のようにします。

$ rerun 'rackup'

あなたはアイデアを得る。

インプロセス リロードが必要な場合は、 を確認してくださいSinatra::Reloader

于 2009-08-08T10:31:56.507 に答える
45

gem install sinatra-reloader

require 'sinatra'
require 'sinatra/reloader'

:手動でリロードする必要があるカスタムファイルではなく、sinatraハンドラー(および場合によっては一部のsinatraサーバー構成コマンド)のみをリロードします。

9年後のUPD:を使用して他のファイルをリロードすることはすでに可能であるようですalso_reloaddont_reloadおよびafter_reload-https ://github.com/sinatra/sinatra/pull/1150

于 2010-10-20T16:49:44.193 に答える
14

rerun宝石を使用できます。

gem install rerun
rerun 'ruby app.rb' 

または、ラックアップを使用している場合

rerun 'rackup'
于 2013-01-24T04:52:00.533 に答える
10

gem install sinatra-reloader

require 'sinatra/base'
require "sinatra/reloader"

class MyApp < Sinatra::Base
  register Sinatra::Reloader

  get '/' do
    "Hello Testing1!"
  end
end

環境変数を development に設定し、条件付きで gem をロードすることができます。

于 2011-09-09T19:54:48.443 に答える
6

Passenger Standaloneでアプリケーションを実行する場合は、tmp/always_restartファイルを作成するだけです:

$ touch tmp/always_restart.txt

詳細については、乗客のドキュメントを参照してください。

于 2011-11-18T18:13:18.913 に答える
4

Windows では、これに再起動ジェムを使用しています。

restart ruby my_app.rb

または、ラックアップの場合:

restart rackup

詳細については、こちらを参照してください。お役に立てば幸いです。

于 2014-09-23T14:14:23.140 に答える