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!
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ế. –