4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Sinatra を reload させる方法 2020 年版

Last updated at Posted at 2020-06-02

公式サイトの FAQ によると、 rerun を使う方法が推奨されている。

rerun 'ruby app.rb'

rerun はファイルの更新を検知してプロセスを再起動するツールで、要は guard みたいなもの。 Guardfile のような設定ファイル不要なので手軽に使える。

Sinatra の自動リロード用ツールとしては Sinatra::Reloader が有名だが、 FAQ では推奨されていない。

なぜ Sinatra::Reloader は推奨されていないのか

FAQ は「in-process のコードリロードは難しく、あらゆる状況で動作する解決策は無いので、 out-of-process リロードを推奨する」といっている。

rerun や guard はプロセスを再起動するので、 out-of-process リロードためのツールといえる。一方 Sinatra::Reloader は in-process リロードのためのツールといえる。

公式サイトの立場では、問題が起こる可能性の少ない手法を勧めているのだろう。

rerun を使う場合の注意点

プロセスを再起動するため、ファイル保存からサーバ再起動完了までに若干のタイムラグがある。

アプリケーションが重厚になると起動時間が伸びるので、開発体験を損なう可能性がある。

タイムラグが許容範囲を超える規模のアプリケーションを開発する場合は、 Sinatra::Reloader を検討すべきかもしれない。

4
4
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?