Pas un tel fichier ou répertoire – connect (2) pour “/ tmp / puma-status-1439451994589-14316”

Je veux déployer mes rails à travers Capistrano avec Puma et Nginx. J’ai configuré deploy.rb pour puma et ajouté les gems requirejs dans les fichiers gem.

Je suis capable d’exécuter la commande de déploiement initiale en tant que «cap production deploy: initial» et de pouvoir accéder à mon application de rails, comme décrit ci-dessous.

Mais quand je veux déployer de nouveaux changements ou redémarrer puma, cela échoue et donne cette erreur.

Gemfile:

gem 'capistrano', '~> 3.4.0' gem 'capistrano-rvm', require: false gem 'capistrano-rails', require: false gem 'capistrano-bundler', require: false gem 'capistrano3-puma', require: false # gem 'capistrano-passenger', require: false gem 'capistrano-ext', require: false gem 'capistrano-faster-assets', '~> 1.0.2' 

Capfile:

 # Load DSL and set up stages require 'capistrano/setup' # Include default deployment tasks require 'capistrano/deploy' require 'capistrano/rails' require 'capistrano/bundler' require 'capistrano/rails/assets' require 'capistrano/rails/migrations' require 'capistrano/faster_assets' require 'capistrano/rvm' require 'capistrano/puma' require 'capistrano/puma/workers' require 'capistrano/puma/nginx' Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r } 

deploy.rb

 # Puma Server Configuration set :puma_threads, [4, 16] set :puma_workers, 1 # Don't change these unless you know what you're doing set :pty, true set :use_sudo, false set :puma_bind, "unix://#{shared_path}/tmp/sockets/puma.sock" # set :puma_conf, "#{shared_path}/puma.rb" 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 :puma_preload_app, true set :puma_worker_timeout, nil set :puma_init_active_record, true 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/capistrano` puts "WARNING: HEAD is not the same as origin/capistrano" 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, :comstack_assets after :finishing, :cleanup after :finishing, :restart end 

J’ai également utilisé la commande ci-dessous pour générer un modèle pour Puma et Nginx, comme ci-dessous.

 rails g capistrano:nginx_puma:config 

J’ai exécuté les commandes ci-dessous pour déployer mes rails sur l’instance EC2 (avec Ubuntu)

 cap production deploy:check cap production puma:config cap production puma:nginx_config cap production deploy:initial 

Maintenant, je veux déployer des modifications avec le code ci-dessous.

 cap production deploy 

Mais je reçois l’erreur comme ci-dessous.

 (Backtrace ressortingcted to imported tasks) cap aborted! SSHKit::Runner::ExecuteError: Exception while executing as [email protected]: bundle exit status: 1 bundle stdout: No such file or directory - connect(2) for "/tmp/puma-status-1439451994589-14316" bundle stderr: Nothing written SSHKit::Command::Failed: bundle exit status: 1 bundle stdout: No such file or directory - connect(2) for "/tmp/puma-status-1439451994589-14316" bundle stderr: Nothing written Tasks: TOP => deploy:restart (See full trace by running task with --trace) 

S’il vous plaît aider! Merci

    J’ai trouvé une solution de contournement pour résoudre ce problème. Ajoutez simplement l’extrait de deploy.rb ci-dessous à votre fichier deploy.rb . Il remplacera la tâche de redémarrage de puma.

     Rake::Task["puma:restart"].clear_actions namespace :puma do task :restart do on roles(:all) do execute "RACK_ENV=#{fetch(:rails_env)} #{fetch(:rvm_binary)} #{fetch(:rvm_ruby_version)} do pumactl -S #{shared_path}/tmp/pids/puma.state restart" end end end