29943


railsアプリをawsで作成しています。capistranoでdeployできるようにしたのですが  
コードを変更しても変更内容が反映されません。unicorn nginxを使っています。  
awsサーバ側に入ってコードを確認すると変更されています。

config/unicorn/production.rbはこんな感じ

[code]

      $worker  = 2
      $timeout = 30
      $app_dir = "/var/www/hoge/current"
      $listen  = File.expand_path 'tmp/sockets/.unicorn.sock', $app_dir
      $pid     = File.expand_path 'tmp/pids/unicorn.pid', $app_dir
      $std_log = File.expand_path 'log/unicorn.log', $app_dir
    
      worker_processes  $worker
      working_directory $app_dir
      stderr_path $std_log
      stdout_path $std_log
      timeout $timeout
      listen  $listen
      pid $pid
    
      preload_app true
    
      before_fork do |server, worker|
        defined?(ActiveRecord::Base) and ActiveRecord::Base.connection.disconnect!
        old_pid = "#{server.config[:pid]}.oldbin"
        if old_pid != server.pid
          begin
            Process.kill "QUIT", File.read(old_pid).to_i
          rescue Errno::ENOENT, Errno::ESRCH
          end
        end
      end
      after_fork do |server, worker|
        defined?(ActiveRecord::Base) and ActiveRecord::Base.establish_connection
      end
    
[/code]


CC BY-SA 3.0
2016-10-23T23:54:39.207
29851
2016-10-27T13:43:57.797
2016-10-24T03:48:34.703
10851
10851
question
ruby-on-rails capistrano
railsアプリでcapistrano deployしても変更内容が反映されない


  1. 各種変数をログに出力して想定した値になっているか確認する
  2. before_fork 内に適当なデバッグ文を挿入して、処理がどこに分岐しているか確認する
  3. 例外を握りつぶしている箇所があるため、適当なメッセージが出力されるように修正する


CC BY-SA 3.0
2016-10-24T09:13:30.713
29864
2016-10-24T09:13:30.713
19298
29851
answer


log/unicorn.logに以下ログが出ていました。  
`  
/home/hoge/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0/gems/bundler-1.13.3/lib/bundler/definition.rb:31:in
`build': /var/www/hoge/releases/20161017131031/Gemfile not found
(Bundler::GemfileNotFound)  
`  
20161017131031ディレクトリが無かったのでコピーして作ったら動くようになりました。  
なぜないディレクトリが指定されてたのかはわかりませんが(^^;;


CC BY-SA 3.0
2016-10-27T13:43:57.797
29943
2016-10-27T13:43:57.797
10851
29851
answer