Railsでソースコードの変更が反映されなかった

f:id:ihatov08:20160928222748j:plain

Railsでソースコードの変更が反映されませんでした。

単純にそういう設定にしていたから

今日から新しいプロジェクトにアサインしました。
環境構築がサクッと終わり、いざコーディングをしてもソースコードの変更が反映されませんでした。vagrantを再起動すると反映されるのですが、毎回再起動するわけにもいきません。
nginxが原因なのか、はたまたunicornが原因なのか?
原因究明にかなり時間がかかりました。
結局、Railsの設定ファイルに以下の記述があったので、変更のたびにunicornの再起動が必要のようです。

config.cache_classes = false

Rails アプリケーションを設定する | Rails ガイド

ここら辺もすぐにわかるようになりたいです。
なんとなく勘をつけて、設定ファイルを見るようになりたいです。
毎回unicornの再起動も面倒なので、rakeファイルでコマンドを作成します。
これでrake unicorn:restartでunicornを再起動できます。

# lib/tasks/unicorn.rake
# Unicorn コマンドタスク
# rake unicorn:start
# rake unicorn:stop
namespace :unicorn do
##
# Tasks
##
desc "Start unicorn for development env."
task(:start) {
env = ENV['RAILS_ENV']
if env.blank?
env = 'development'
end
config = Rails.root.join('config', 'unicorn', "#{env}.rb")
sh "bundle exec unicorn_rails -c #{config} -E #{env} -D"
}
desc "Stop unicorn"
task(:stop) { unicorn_signal :QUIT }
desc "Restart unicorn with USR2"
task(:restart) { unicorn_signal :USR2 }
desc "Increment number of worker processes"
task(:increment) { unicorn_signal :TTIN }
desc "Decrement number of worker processes"
task(:decrement) { unicorn_signal :TTOU }
desc "Unicorn pstree (depends on pstree command)"
task(:pstree) do
sh "pstree '#{unicorn_pid}'"
end
def unicorn_signal signal
Process.kill signal, unicorn_pid
end
def unicorn_pid
begin
env = ENV['RAILS_ENV']
if env.blank? || env == 'development'
File.read("/tmp/unicorn.pid").to_i
elsif env == 'staging'
File.read("/home/nowall.inc/current/tmp/pids/unicorn.pid").to_i
elsif env == 'production'
File.read("/home/deployer/current/tmp/pids/unicorn.pid").to_i
end
rescue Errno::ENOENT
raise "Unicorn doesn't seem to be running"
end
end
end

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です