运行脚本/ delayed_job启动命令时出现以下错误。我正在使用Jruby,所以我尝试使用以下命令:
jruby script/delayed_job start
但是我收到以下错误:
fork() function is unimplemented on this machine (NotImplementedError)
我用google搜索,因为我的观察分叉没有实现jruby。所以我想用rake task来运行delayed_job脚本。
任何人都可以帮我写一下需要运行delayed_job脚本的rake任务。
答案 0 :(得分:4)
以下是运行延迟作业的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)
答案 1 :(得分:0)
我使用的是jruby 1.7.3,rails 2.3.17&amp;我的遗留铁路应用程序的delayed_job 1.8.4。
命令&#34; jruby script / delayed_job start&#34;我的申请没有用。我听说jruby 1.7.3不支持delayed_job。 因此,而不是&#34; jruby script / delayed_job start&#34;命令,作为一种解决方法,我决定使用rake任务&#34;工作:工作&#34;任务。
我在我的freezed delayed_job(1.8.4)gem的lib / delayed_job.rb文件中添加了以下行。 需要File.dirname(文件)+&#39; / delayed / performable_method&#39;
这解决了&#34; performable_method&#34;运行&#34; rake jobs:work&#34;我qa&amp;的任务生产环境。
现在,我推迟的工作在所有环境中都能正常运行。 希望这会有所帮助。