1

私は、delayed_job を本番環境で開始するのに問題があります。rake jobs:work コマンドを使用するだけで開発中はすべて正常に動作しますが、Capistrano を使用してサーバーにデプロイした後、何時間も失敗した後、DJ を実行する方法がわかりません。

delayed_job の github リポジトリで行うように指示されているように、"daemons" gem をバンドルしたことを確認し、"script/delayed_job start" の代わりに "bin/delayed_job start" コマンドで起動しようとしました。 Rails 4.で必要なジェネレーター「rails generatedelayed_job」も実行しました。これにより、プロジェクトのbinディレクトリ内にこのファイルが生成されました。

#!/usr/bin/env ruby

require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment'))
require 'delayed/command'
Delayed::Command.new(ARGV).daemonize

一貫して発生するエラーは-bash: bin/delayed_job: No such file or directory、rvm を使用しているために発生する可能性があると思われるものです。

gemfile については、delayed_job_active_record とデーモンを含めました。この時点で、私は完全に困惑しており、探索するリンクがありません。

source 'https://rubygems.org' 
ruby '2.0.0'
gem 'rails', '4.0.0'
 # Rails defaults
gem 'sass-rails', '~> 4.0.0'
gem 'bundler' 
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0' 
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 1.2'
 # learn-rails
gem 'anjlab-bootstrap-rails', :require => 'bootstrap-rails', :github => 'anjlab/bootstrap-rails'
gem 'figaro'
gem 'gibbon'
gem 'high_voltage'
gem 'simple_form', '>= 3.0.0.rc'
gem 'delayed_job_active_record', '~> 4.0.0'
group :development, :test do
gem 'sqlite3'
gem 'better_errors'
gem 'quiet_assets'
gem 'capistrano', '~> 2.15.5'
gem 'rvm-capistrano'
gem 'rspec-rails'
end
group :test do
gem "factory_girl_rails", "~> 4.0"
gem 'capybara'
gem 'poltergeist'
gem "faker", "~> 1.2.0"
end
group :production do
gem 'unicorn'
gem 'pg'
gem 'daemons'
end
4

1 に答える 1

0

bin/delayed_job の最初の行が有効な Ruby 実行可能ファイルを指していることを確認してください。rubyおそらく解決できないものを使用しています。rails_root ディレクトリに cd すると、rvm は ruby​​ へのフル パスを追加しますが、スクリプトの実行時にはそれが行われません。少しハックな解決策の 1 つは、ディレクトリに cd し、次のように実行which rubyして bin/delayed_job に書き込むことです#!<path_to_ruby>/usr/bin/envCapistrano が既にこれを行っているため、呼び出す必要はありません。

于 2014-02-22T20:22:55.170 に答える