私は使っている
# my_app.rb
load 'index.rb'
このようにサーバーを起動します
ruby my_app.rb
しかし、インデックスページで行った変更をリロードすることはありません。
ここで何か見逃しましたか?
シナトラ FAQを参照してください。
「変更時に Sinatra アプリをリロードするにはどうすればよいですか?」
まず第一に、Ruby でのインプロセス コードのリロードは難しく、すべてのシナリオで機能するソリューションを用意することは技術的に不可能です。
これが、プロセス外のリロードを行うことをお勧めする理由です。
まだ再実行していない場合は、最初に再実行をインストールする必要があります。
$ gem install rerun
Sinatra アプリを次のように起動すると:
$ ruby app.rb
リロードのためにしなければならないことは、代わりにこれを行うことだけです:
$ rerun 'ruby app.rb'
たとえば、ラックアップを使用している場合は、代わりに次のようにします。
$ rerun 'rackup'
あなたはアイデアを得る。
インプロセス リロードが必要な場合は、 を確認してください
Sinatra::Reloader
。
gem install sinatra-reloader
require 'sinatra'
require 'sinatra/reloader'
注:手動でリロードする必要があるカスタムファイルではなく、sinatraハンドラー(および場合によっては一部のsinatraサーバー構成コマンド)のみをリロードします。
9年後の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
環境変数を development に設定し、条件付きで gem をロードすることができます。
Passenger Standaloneでアプリケーションを実行する場合は、tmp/always_restart
ファイルを作成するだけです:
$ touch tmp/always_restart.txt
詳細については、乗客のドキュメントを参照してください。