script / delayed_job start命令问题

时间:2013-07-16 12:08:58

标签: ruby-on-rails ruby fork jruby delayed-job

运行脚本/ 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任务。

2 个答案:

答案 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;的任务生产环境。

现在,我推迟的工作在所有环境中都能正常运行。 希望这会有所帮助。