ruby on rails - how - No sé cómo crear la tarea ''inicio'' cuando se ejecuta ''cap production deploy'' para capistrano 3.8.0 con Rails
deploy rails app (2)
Intenté desplegar mi sitio de rieles utilizando capistrano. Así que cuando corrí
cap production deploy
Esto es lo que conseguí
(Backtrace restricted to imported tasks)
cap aborted!
Don''t know how to build task ''start'' (see --tasks)
Tasks: TOP => production
Este es mi archivo de tapa
# 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 }
Este es mi 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
Así que el código anterior está funcionando antes, pero cuando actualizo mis gemas, ya no puedo implementar mi aplicación.
Entonces, ¿cómo puedo solucionar esto?
¡Gracias!
Agregue install_plugin Capistrano::Puma
en su Capfile luego de require ''capistrano/puma''
.
capistrano3-puma
mudó a 3.0 hace unos días. Esta línea es necesaria para cargar las tareas puma predeterminadas en esta versión.
Estas dos líneas deberían estar allí en Capfile. Además, estos cambios se realizan en la reciente versión de puma gema ''capistrano3-puma''.
require ''capistrano/puma''
install_plugin Capistrano::Puma # Default puma tasks
Por favor, tenga en cuenta la jerarquía en la que están escritos en archivo de cap. Esto ayuda a cargar las tareas puma en cap. Puedes enumerar las tareas capistrano con cap -T
. También busque la tarea relacionada con puma una vez que haya actualizado el archivo de Cap con las dos líneas anteriores.
Para obtener más detalles, consulte https://github.com/seuros/capistrano-puma#usage