【问题标题】:'cap deploy' doesn't restart puma but 'cap deploy:restart' does'cap deploy' 不会重启 puma,但 'cap deploy:restart' 会
【发布时间】:2017-07-07 09:18:52
【问题描述】:

将我的ruby2.2.4 升级到2.4.1 后,我开始面临这个问题。

我的服务器会在cap deploy 之后关闭,但在工作之后执行cap deploy:restart

Capfile:

require 'capistrano/puma'
require 'capistrano/puma/jungle'

deploy.rb:

# ...

namespace :deploy do

  # after :restart, :clear_cache do
  #   on roles(:web), in: :groups, limit: 3, wait: 10 do
  #     # Here we can do anything such as:
  #     # within release_path do
  #     #   execute :rake, 'cache:clear'
  #     # end
  #   end
  # end

  desc 'Initial Deploy'
  task :initial do
    on roles(:app) do
      before 'deploy:restart', 'puma:start'
      invoke 'deploy'
    end
  end

  desc 'Restart application'
  task :restart do
    on roles(:app), in: :sequence, wait: 5 do
      invoke 'puma:restart'
    end
  end

  before :starting,     :check_revision
  # after  :finishing,    :compile_assets
  after  :finishing,    :cleanup
  after  :finishing,    :restart

  # https://github.com/airbrake/airbrake#capistrano
  after :finished, 'airbrake:deploy'
end

任何关于如何诊断问题的帮助也会很好。

【问题讨论】:

    标签: ruby-on-rails capistrano


    【解决方案1】:

    在 gemfile 中添加 capistrano-puma gem(如果已添加则跳过):

    gem 'capistrano3-puma' , group: :development
    

    然后,通过在 Capfile 中添加以下行来安装 Capistrano::Puma 插件:

    install_plugin Capistrano::Puma
    

    这将包括所有必要的 puma 库。

    另外,让您在deploy.rb 文件中设置 puma 配置,如下所示:

    set :application,     'test-app'
    ...
    ...
    set :puma_bind,       "unix://#{shared_path}/tmp/sockets/#{fetch(:application)}-puma.sock"
    set :puma_state,      "#{shared_path}/tmp/pids/puma.state"
    set :puma_pid,        "#{shared_path}/tmp/pids/puma.pid"
    

    现在,尝试部署您的应用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多