[英]Issue with script/delayed_job start commad
运行script / delayed_job start命令时出现以下错误。 我正在使用Jruby,因此尝试使用以下命令:
jruby script/delayed_job start
但是我收到以下错误:
fork() function is unimplemented on this machine (NotImplementedError)
我已经用谷歌搜索,因为我的观察叉没有为jruby实现。 因此,我正在考虑使用rake任务运行delay_job脚本。
谁能帮我写出需要运行delay_job脚本的rake任务。
下面是运行延迟工作的rake任务的代码
路径将为\\ script \\ delayed_job.rb
#!/usr/bin/env ruby
# -*- ruby -*-
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'
require File.join(RAILS_ROOT, '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)
我在旧版Rails应用程序中使用的是jruby 1.7.3,rails 2.3.17和delay_job 1.8.4。
命令“ jruby脚本/ delayed_job启动”不适用于我的应用程序。 我听说jruby 1.7.3不支持delay_job。 因此,作为一种解决方法,我决定使用rake任务“ jobs:work”任务,而不是“ jruby script / delayed_job start”命令。
我在冻结的delay_job(1.8.4)gem的lib / delayed_job.rb文件中添加了以下行。 需要File.dirname( FILE )+'/ delayed / performable_method'
这已经解决了在我的质量保证和生产环境中运行“ rake jobs:work”任务时与“ performable_method”相关的错误。
现在,我延迟的工作在所有环境下都可以正常工作。 希望这会有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.