Ruby on rails 为什么我不能用crontab启动延迟的_作业守护进程?
我有以下脚本用于在RubyonRails中启动延迟工作人员Ruby on rails 为什么我不能用crontab启动延迟的_作业守护进程?,ruby-on-rails,delayed-job,crontab,reboot,Ruby On Rails,Delayed Job,Crontab,Reboot,我有以下脚本用于在RubyonRails中启动延迟工作人员 require 'rubygems' require 'daemon_spawn' $: << '.' RAILS_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..')) class DelayedJobWorker < DaemonSpawn::Base def start(args) ENV['RAILS_ENV'] ||=
require 'rubygems'
require 'daemon_spawn'
$: << '.'
RAILS_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
class DelayedJobWorker < DaemonSpawn::Base
def start(args)
ENV['RAILS_ENV'] ||= args.first || 'development'
Dir.chdir RAILS_ROOT
require File.join('config', 'environment')
Delayed::Worker.new.start
end
def stop
system("kill `cat #{RAILS_ROOT}/tmp/pids/delayed_job.pid`")
end
end
DelayedJobWorker.spawn!(:log_file => File.join(RAILS_ROOT, "log", "delayed_job.log"),
:pid_file => File.join(RAILS_ROOT, 'tmp', 'pids', 'delayed_job.pid'),
:sync_log => true,
:working_dir => RAILS_ROOT)
我正在尝试使用crontab在启动时自动执行此操作为此,我制作了这个脚本
#!/bin/bash
cd path/to/my/application
ruby script/delayed_job start production
这是我的crontab
# m h dom mon dow command
SHELL=/bin/bash
@reboot /path/to/my/script/delayed_job_at_startup.sh
当我重新启动系统时,脚本没有成功,我从crontab收到此消息
X-Cron-Env: <SHELL=/bin/bash>
X-Cron-Env: <HOME=/home/finalsayan>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=finalsayan>
/usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- daemon_spawn (LoadError)
from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from script/delayed_job:24:in `<main>'
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
X-Cron-Env:
/usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site\u ruby/1.9.1/rubygems/custom\u require.rb:36:在“require”中:无法加载此类文件--守护进程\u spawn(LoadError)
from/usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site\u ruby/1.9.1/rubygems/custom\u require.rb:36:in'require'
来自脚本/延迟作业:24:in`'
感谢您的帮助问题在于,在rvm中使用cron时,您必须加载rvm环境 有关文档,请参阅 cron在启动时调用的脚本如下
#!/bin/bash
source /usr/local/rvm/environments/default
# Go to the app
APP_HOME=/path/to/my/application
cd $APP_HOME
# start the delayed jobs
ruby script/delayed_job start production
问题是,在rvm中使用cron时,必须加载rvm环境 有关文档,请参阅 cron在启动时调用的脚本如下
#!/bin/bash
source /usr/local/rvm/environments/default
# Go to the app
APP_HOME=/path/to/my/application
cd $APP_HOME
# start the delayed jobs
ruby script/delayed_job start production