小ネタ。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