2018-01-18

Railsプラグイン開発のダミーアプリでrails restart

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

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

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

source 'https://rubygems.org'

gemspec

gem 'puma'

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

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

guard :shell do
  watch /(app|lib)\/.*/ do |m|
    puts `cd spec/dummy; bundle exec rails restart`
    m[0] + " has changed."
  end
end

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

このエントリーをはてなブックマークに追加