0

script/delayed_job start コマンドの実行中に次のエラーが発生します。私はJrubyを使用しているので、次のコマンドで試しました:

jruby script/delayed_job start

しかし、次のエラーが表示されます。

fork() function is unimplemented on this machine (NotImplementedError)

私の観測フォークはjrubyに実装されていないため、グーグルで調べました。そのため、rake タスクを使用してdelayed_job スクリプトを実行することを考えています。

だれか、delayed_job スクリプトを実行する必要がある rake タスクを書くのを手伝ってくれませんか。

4

2 に答える 2

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)
于 2013-07-16T12:15:36.687 に答える
0

レガシー Rails アプリケーションに jruby 1.7.3 、 rails 2.3.17 およびdelayed_job 1.8.4 を使用していました。

コマンド「jruby script/delayed_job start」がアプリケーションで機能しませんでした。jruby 1.7.3 はdelayed_jobをサポートしていないと聞きました。そのため、"jruby script/delayed_job start" コマンドの代わりに、回避策として rake タスク "jobs:work" タスクを使用することにしました。

フリーズしたdelayed_job (1.8.4) gemのlib/delayed_job.rbファイルに次の行を追加しました。File.dirname( FILE ) + '/delayed/performable_method'が必要です

これにより、qa および実稼働環境で「rake jobs:work」タスクを実行しているときに発生する「performable_method」関連のエラーが解決されました。

今、私の遅延した仕事は、すべての環境で完全にうまく機能しています。これが役立つことを願っています。

于 2014-06-04T14:00:40.267 に答える