1
0

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 1 year has passed since last update.

ItayaAdvent Calendar 2022

Day 10

Sinatraを使うならshotgunは入れて変更自動反映できた方が幸せになりそう

Last updated at Posted at 2022-12-09

概要

Sinatraを何度か使っているのですが当たり前のように変更して再起動して...を繰り返していたのですが、ある時これ変えられないのかな?と思って調査したのでその報告です。

【余談】
変更自動反映ってホットリロードではないしオートリロードという言葉もちょっと違う気もして...良いフレーズありますかね🤔

選択肢

変更自動反映の方法を調べると下記のような選択肢がありました

  • Sinatra::Reloader
  • shotgun

それぞれの動きの話と、なぜその上でshotgunが良いのかお話したいと思います

Sinatra::Reloader

こちらは文字通りファイルを変更したら反映されるものになってます。

使い方

Gemfileに下記を追加

gem 'sinatra-contrib'

app.rbファイルに

require 'sinatra/reloader'

を追加する。

以上!!

これでapp.rbで変更を加えると再起動しなくてもリロードすると変更が反映されてます。
ただ、app.rbで外部のファイルをrequireで呼び出している場合、そちらのファイルを変更しても自動反映されません。

shotgun

こちらも文字通りファイルを変更したら反映されるものになってます。

使い方

Gemfileに下記を追加

gem 'shotgun'

既存ファイルへの変更無し。

起動時に
bundle exec ruby app.rb
となっているところを、
bundle exec shotgun app.rb
というように起動する。
以上!!

これでapp.rbで変更を加えると再起動しなくてもリロードすると変更が反映されてます。
更に、app.rbで外部のファイルをrequireで呼び出している場合、そちらのファイルを変更しても自動反映されます!!!!

なぜshotgun??

上記で軽く記載したのですが、shotgunは読み込んでいるファイルを変更してもちゃんとそれが反映されるんですよね。
ほんとにこれがありがたい。
自分の場合クロールする処理を別ファイルでクラスとして用意してそれを呼び出す形にしているので、これがあるととてもありがたい...

まとめ

ほんとに簡単なapp.rbにしかロジックを書かないのであればよいのですが、そうでない場合はshotgunを入れておいたほうが幸せなのではないでしょうか?

1
0
0

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?