Ich habe versucht, meine Rails-Site mit capistrano zu implementieren. So wenn ich liefIch weiß nicht, wie man die Aufgabe 'start' erstellt, wenn 'cap production deploy' für capistrano 3.8.0 mit Rails ausgeführt wird
cap production deploy
Dies ist, was ich erhielt
(Backtrace restricted to imported tasks)
cap aborted!
Don't know how to build task 'start' (see --tasks)
Tasks: TOP => production
Diese Datei meine Kappe ist
# 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 }
Das ist mein 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
So Der obige Code funktioniert Aber wenn ich meine Edelsteine aktualisiere, kann ich meine App nicht mehr bereitstellen.
Also wie kann ich das beheben?
Danke!
danke. Können Sie uns sagen, wie Sie dieses Problem gelöst haben, da die Fehlermeldung so kryptisch war? – sandre89
@ sandre89 Ich habe das gleiche Projekt nur ein paar Wochen vor diesem Ereignis implementiert. Nach vielem Googlen, aber ohne Antworten, fange ich an zu finden, was sich zwischen diesen beiden Deployments geändert hat. Ich habe bemerkt, dass die meisten Edelsteine in meinem Gemfile eine Versionsbeschränkung haben, mit Ausnahme der Capistrano-Erweiterungsgruppe. Also habe ich die Sperrdatei und die Geschichte dieser Edelsteine auf [rubygems.org] (https://rubygems.org/gems/capistrano3-puma/) überprüft und ein Hauptversions-Upgrade für 'capistrano3-puma' gefunden. Dann hat das Befolgen des Dokuments diesen Fehler behoben. – Jin
Ich wünschte, ich könnte dir ein Bier dafür kaufen. Vielleicht kann ich dir etwas Bargeld schicken? – Augusto