2016-10-01 13 views
5

Tôi đã cố triển khai ứng dụng Rails cho máy chủ thông qua Capistrano. Đây là mã của tôi trên deploy.rb`puma: restart 'gọi hai lần nhưng tôi chỉ gọi nó một lần trên ứng dụng triển khai của tôi thông qua Capistrano?

set :repo_url,  '[email protected]:varisdaOfficial/insurance_site.git' 
set :application,  'insurance_code' 
set :user,   'deploy' 
set :puma_threads, [4, 16] 
set :puma_workers, 0 

set :pty,    true 
set :use_sudo,  false 
set :stage,   :production 
set :deploy_via,  :remote_cache 
set :deploy_to,  "/home/#{fetch(:user)}/apps/#{fetch(:application)}" 
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" 
set :puma_access_log, "#{release_path}/log/puma.error.log" 
set :puma_error_log, "#{release_path}/log/puma.access.log" 
set :ssh_options,  { forward_agent: true, user: fetch(:user), keys: %w(~/.ssh/id_rsa.pub) } 
set :puma_preload_app, true 
set :puma_worker_timeout, nil 
set :puma_init_active_record, true # Change to false when not using ActiveRecord 
set :linked_dirs, %w(public/uploads) 

namespace :puma do 
    desc 'Create Directories for Puma Pids and Socket' 
    task :make_dirs do 
    on roles(:app) do 
     execute "mkdir #{shared_path}/tmp/sockets -p" 
     execute "mkdir #{shared_path}/tmp/pids -p" 
    end 
    end 

    before :start, :make_dirs 
end 

namespace :deploy do 
    desc "Make sure local git is in sync with remote." 
    task :check_revision do 
    on roles(:app) do 
     unless `git rev-parse HEAD` == `git rev-parse origin/master` 
     puts "WARNING: HEAD is not the same as origin/master" 
     puts "Run `git push` to sync changes." 
     exit 
     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 

    desc 'clear temp cache' 
    task :clear_cache do 
    on roles(:app) , in: :sequence, wait: 1 do 
     execute "rm -rf #{shared_path}/tmp/cache/[^.]*" 

    end 
    end 

    before :starting,  :check_revision 
    after :finishing, :compile_assets 
    after :finishing, :cleanup 
    after :finishing, :clear_cache 
    after :finishing, :restart 
end 

Vì vậy, khi tôi chạy 'sản xuất mũ triển khai' tất cả mọi thứ hoạt động trơn tru trang web của tôi có thể được triển khai thành công, nhưng tôi nhận được tin nhắn sau đó.

Capistrano tasks may only be invoked once. Since task `puma:restart' was previously invoked, 
invoke("puma:restart") at/Users/manjarb/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/capistrano3-puma-1.2.1/lib/capistrano/tasks/puma.rake:134 will be skipped. 
If you really meant to run this task again, first call Rake::Task["puma:restart"].reenable 
THIS BEHAVIOR MAY CHANGE IN A FUTURE VERSION OF CAPISTRANO. Please join the conversation here if this affects you. 
https://github.com/capistrano/capistrano/issues/1686 

Tôi chỉ gọi lại công việc khởi động lại một lần. Vậy làm thế nào tôi có thể sửa thông điệp này?

Cảm ơn!

Trả lời

15

Tôi cho rằng bạn đang sử dụng đá quý capistrano3-puma. Đá quý đó sẽ tự động khởi động lại puma cho bạn khi kết thúc triển khai thành công. Đây là lần đầu tiên nhiệm vụ khởi động lại được gọi.

Ngoài ra, trong deployment.rb của bạn, bạn đã xác định tác vụ khởi động lại tùy chỉnh của riêng mình và bạn đang gọi nó after :finishing. Đó là nguồn của lời kêu gọi thứ hai, và do đó là cảnh báo.

Để "sửa chữa" vấn đề này, loại bỏ các nhiệm vụ không cần thiết:

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

Và loại bỏ điều này:

after :finishing, :restart 
+1

Câu trả lời của Matt là một trong những quyền. Nhưng chỉ cho những người cần nhiệm vụ Capistrano của họ chạy hai lần, bạn có thể gọi nhiệm vụ bằng cách gọi! thay thế. –

Các vấn đề liên quan