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
コメントを残す