せっかくローカルで変更して上手くいっても、本番環境で変化がなければなんの意味もありません。
今回、ローカルホストではしっかり変わっているにも関わらず、本番環境(capistranoで自動デプロイ時)に反映されない時の対処法を書いていきます。
結論「unicornをkill」しましょう。
unicornをkillする手順
1.ターミナル
[ec2-user@本番環境 <リポジトリ名>]$ ps aux | grep unicorn
こちらをしていただくと
ec2-user 17877 0.4 18.1 588472 182840 ? Sl 01:55 0:02 unicorn_rails master -c config/unicorn.rb -E production -D
ec2-user 17881 0.0 17.3 589088 175164 ? Sl 01:55 0:00 unicorn_rails worker[0] -c config/unicorn.rb -E production -D
ec2-user 17911 0.0 0.2 110532 2180 pts/0 S+ 02:05 0:00 grep --color=auto unicorn
このように表記されると思います。
一番上の行の5桁の数字(PID)をkillします。
kill -9 上記で確認したPID
あとはもう一度デプロイ するだけ
でも、毎回デプロイ のたびにこれをするのは手間ですよね。
なので、デプロイ 時に自動でunicornをkillしてstartしてくれる記述を書きましょう。
config/deploy.rb
after 'deploy:publishing', 'deploy:restart'
namespace :deploy do
task :restart do
invoke 'unicorn:stop'
invoke 'unicorn:start'
end
desc 'upload master.key'
task :upload do
on roles(:app) do |host|
if test "[ ! -d #{shared_path}/config ]"
execute "mkdir -p #{shared_path}/config"
end
upload!('config/master.key', "#{shared_path}/config/master.key")
end
end
before :starting, 'deploy:upload'
after :finishing, 'deploy:cleanup'
end
こちらの
namespace :deploy do
task :restart do
invoke 'unicorn:stop'
invoke 'unicorn:start'
end
このように記述することで、デプロイ 時に自動でunicornを再起動してくれます。
私のような誰かの助けになれば幸いです!!!
それではまたどこかで^^