2010-07-21 4 views
5

Ich versuche, eine Rails App auf JRuby auf Schienen zu konvertieren. Derzeit jruby script/delayed_job run gibt:Gibt es einen verzögerten Job wie Juwel für jruby?

/usr/lib/jruby/lib/ruby/gems/1.8/gems/delayed_job-2.0.3/lib/delayed/command.rb:50:in `each_object': ObjectSpace is disabled; each_object will only work with Class, pass -X+O to enable (RuntimeError) 
    from /usr/lib/jruby/lib/ruby/gems/1.8/gems/delayed_job-2.0.3/lib/delayed/command.rb:50:in `daemonize' 
    from script/delayed_job:5 

Gibt es ein Juwel wie delayed_job für jruby?

Antwort

1

Ich wusste nicht, dass der delayed_job ObjectSpace verwendet.
Jruby deaktiviert es standardmäßig und ich kenne die Auswirkungen auf die Leistung
der Aktivierung mit -x + O nicht.
Wenn Sie einfache und wenige Jobs verarbeiten müssen, sollten Sie BackgrounDRB in Betracht ziehen.
Wenn Sie etwas zum Skalieren benötigen, sollten Sie sich Workling/Starling ansehen.

1

Ich hatte das gleiche genau das gleiche Problem. Am Ende habe ich mich entschieden, stattdessen Resque zu verwenden, dem ich mich anfangs widersetzte, weil ich dachte, es wäre übertrieben. Sie haben auch ein anderes bewegliches Teil, um zu installieren, Redis ...

Jedoch stellte sich heraus, dass es am Ende einfach zu gründen ist und sehr flexibel ist. Ich bin jetzt wirklich froh, dass ich es versucht habe.

+0

Sind Sie Resque und JRuby unter Windows mit oder auf einem Linux oder Mac? –

+0

@AlexBlakemore Ziemlich Standard: Mac für die Entwicklung, Linux für die Produktion. – Scott

+0

Dank für die Antwort, rettete ich mich davor, Zeit zu verschwenden, vergeblich zu versuchen, Resque auf Windows Server zu arbeiten. Leider sind wir vorerst an einen Windows-Server gebunden. –

2

Für das Protokoll, wenn sie an einen Servlet-Container bereitstellen kann man https://github.com/kares/jruby-rack-worker verwenden Delayed::Job als Teil Ihrer JRuby::Rack Anwendung in einem separaten nativen (Daemon) Thread ausgeführt ...

Verwandte Themen