Rails 4, capistrano 3, delayed_job - cannot find bin / delayed_job on one of the servers

When I deploy the server pre, everything is fine. But if I try to deploy the server staging, I will get this error:
 bundler: command not found: bin/delayed_job

file - config/deploy/staging.rb

set :rails_env, 'staging'  
set :eager_load, :true  
set :unicorn_rack_env, 'staging'  
role :app, %w{deploy@x.x.x.x}  
role :web, %w{deploy@x.x.x.x}  
role :db, %w{deploy@x.x.x.x}  

set :rvm_type, :auto                    # Defaults to: :auto  
set :rvm_ruby_version, '2.1.2'  

set :rails_env, 'staging'  
set :eager_load, :true    
role :app, %w{deploy@x.x.x.}  
role :web, %w{deploy@x.x.x.}  
role :db, %w{deploy@x.x.x.}  
set :rvm_type, :auto                    # Defaults to: :auto  
set :rvm_ruby_version, '2.1.2'  
set :deploy_to, '/var/www/app'  
server 'x.x.x', user: 'deploy', roles: %w{web app} , port: 222  
set :unicorn_pid, ->{ "#{deploy_to}/shared/tmp/pids/unicorn.pid" }  
set :scm, :git  
set :ssh_options, { user: 'superman' }  
set :keep_releases, 5  

restart pending jobs -

namespace :delayed_job do  
  def args  
    fetch(:delayed_job_args, "")   
  end

  def delayed_job_roles  
    fetch(:delayed_job_server_role, :app)   
  end   

  desc 'Stop the delayed_job process'  
  task :stop do  
    on roles(delayed_job_roles) do  
      within release_path do  
        with rails_env: fetch(:rails_env) do  
          execute :bundle, :exec, :'bin/delayed_job', :stop  
        end  
      end  
    end   
  end  

  desc 'Start the delayed_job process'
  task :start do  
    on roles(delayed_job_roles) do  
      within release_path do  
        with rails_env: fetch(:rails_env) do  
          execute :bundle, :exec, :'bin/delayed_job', args, :start  
        end  
      end  
    end   
  end  

  desc 'Restart the delayed_job process'  
  task :restart do  
    on roles(delayed_job_roles) do  
      within release_path do  
        with rails_env: fetch(:rails_env) do  
          execute :bundle, :exec, :'bin/delayed_job', args, :restart  
        end  
      end  
    end   
  end  
end 

Could you give me a hand in this matter? Thanks in advance!

UPDATE 1
Additional information about this error:
lib/capistrano/tasks/delayed_job.rake:33which is equal toexecute :bundle, :exec, :'bin/delayed_job', args, :restart

+4
source share
6 answers

Check if you can see delayed_job on the staging server in #{deploy_to}/shared/bin/

If it does not exist, copy it from the project folder bin.

+2
source

:

bundle exec rails generate delayed_job

delayed_job script shared/bin

+6

. "bundle exec rails generate delayed_job" , bin/delayed_job. config/deploy.rb.

namespace :delayed_job do

  desc "Install Deployed Job executable if needed"
  task :install do
    on roles(delayed_job_roles) do |host|
      within release_path do
        # Only install if not already present
        unless test("[ -f #{release_path}/#{delayed_job_bin} ]")
          with rails_env: fetch(:rails_env) do
            execute :bundle, :exec, :rails, :generate, :delayed_job
          end
        end
      end
    end
  end

  before :start, :install
  before :restart, :install

end
+2

Capistrano:: DelayedJob Gem

Capistrano 3.x

Gemfile:

gem 'capistrano3-delayed-job', '~> 1.0'

Capfile :

require 'capistrano/delayed-job'

deploy.rb

after 'deploy:published', 'restart' do
    invoke 'delayed_job:restart'
end

https://github.com/platanus/capistrano3-delayed-job

0

This is because the server does not have an executable file delayed_job. It must exist in the directory bin. To fix this, you must generate the executable on your development machine and check it against the original control.

This command will create an executable for you:

bundle exec rails generate delayed_job

0
source

Check that the rails_env system variable is set correctly.

0
source

All Articles