2012-10-24 64 views
5

我正在嘗試使用Capistrano部署我的導軌應用程序w/puma。朝部署國稅發到底試圖運行Puma。狀態文件

bundle exec pumactl -S /home/deployer/production/shared/sockets/puma.state restart

從而未能W/

undefined method `has_key?' for false:FalseClass. 

我只是創建了一個空文件puma.state。我的問題是這個文件到底是什麼,它應該是什麼?

回答

9

Puma有一個狀態文件,記錄進程的PID。如果要部署的第一次,你應該刪除.STATE文件,並做了

cap deploy:cold

或者,你可以使用類似

cap puma:start

這將手動啓動美洲獅啓動該進程並創建一個有效的狀態文件。這是我在capistrano的puma start命令:

namespace :puma do 

    desc "Start the application" 
    task :start, :roles => :app, :except => { :no_release => true } do 
    run "cd #{current_path} && RAILS_ENV=#{rails_env} bundle exec puma -t 8:32 -b 'unix://#{shared_path}/sockets/puma.sock' -S #{shared_path}/sockets/puma.state --control 'unix://#{shared_path}/sockets/pumactl.sock' >> #{shared_path}/log/puma-#{rails_env}.log 2>&1 &", :pty => false 
    end 
    after "deploy:start", "puma:start" 
end