小ネタ。Railsプラグイン開発で{test, spec}/dummy内のダミーアプリを起動して確認する場合、プラグインのコード変更はダミーアプリが読み込むgemの変更になるので自動的にリロードされず、ダミーアプリを再起動する必要があります。

また、ダミーアプリはpluginとpluginの依存ライブラリを除いてrailsのみrequireしてます。なので、 rails sしてもpumaではなくWEBrickが立ち上がります。

rails restart(あるいはrake restart)はpumaの再起動方法になるので、このコマンドで再起動する場合は以下のようにpluginのGemfileにpumaを追加する必要があります。

これで bundle installすればrails sで起動したpumaのアプリサーバを rails restartで再起動できます。

ちなみにこれだけだと毎回コマンド打たなきゃいけないのでそれも面倒です。なのでguardで自動化します。Guardfileはguard-shellを使うとこんな感じで書けます。

これでapp, libディレクトリ内のファイル変更を検知して自動的に rails restartしてくれます。まぁ自動化するんならpuma必須じゃないんですけどね…w