J'ai essayé de déployer mon site Rails en utilisant capistrano . Alors quand j'ai couru
cap production deploy
C'est ce que j'ai
(Backtrace restricted to imported tasks)
cap aborted!
Don't know how to build task 'start' (see --tasks)
Tasks: TOP => production
Ceci est mon fichier de casquette
# Load DSL and Setup Up Stages
require 'capistrano/setup'
require 'capistrano/deploy'
require 'capistrano/Rails'
require 'capistrano/bundler'
require 'capistrano/rvm'
require 'capistrano/puma'
require 'capistrano/scm/git'
install_plugin Capistrano::SCM::Git
# Loads custom tasks from `lib/capistrano/tasks' if you have any defined.
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }
C'est mon deploy.rb
set :repo_url, 'xxx'
set :application, 'xxx'
set :user, 'yyy'
set :puma_threads, [4, 16]
set :puma_workers, 0
set :pty, true
set :use_Sudo, false
set :stages, ["staging", "production"]
set :default_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) }
set :puma_preload_app, true
set :puma_worker_timeout, nil
set :puma_init_active_record, true # Change to false when not using ActiveRecord
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
before :starting, :check_revision
after :finishing, :compile_assets
after :finishing, :cleanup
end
Le code ci-dessus fonctionne donc avant, mais lorsque je mets à jour mes pierres précieuses, je ne peux plus déployer mon application.
Alors, comment puis-je résoudre ce problème?
Merci!
Ajoutez install_plugin Capistrano::Puma
dans votre Capfile après require 'capistrano/puma'
.
capistrano3-puma
est passé à la version 3.0 il y a quelques jours. Cette ligne est requise pour charger les tâches puma par défaut dans cette version.
Ces deux lignes devraient être là dans Capfile. De plus, ces changements sont apportés dans la version récente de puma 'capistrano3-puma'.
require 'capistrano/puma'
install_plugin Capistrano::Puma # Default puma tasks
Faites attention à la hiérarchie dans laquelle ils sont écrits dans capfile. Cela aide à charger les tâches de puma en cap. Vous pouvez lister les tâches capistrano avec cap -T
. Recherchez également une tâche liée à puma une fois que vous avez mis à jour le fichier Capfile avec les deux lignes ci-dessus.
Pour plus de détails, voir https://github.com/seuros/capistrano-puma#usage