Rails:在后台进程中Rjb的分段错误,在不在后台时工作正常吗?

Stp*_*tpn 7 ruby-on-rails background-process segmentation-fault ruby-on-rails-3 rjb

我正在运行Resque后台任务,并在调用使用Rjb的gem时不断出现分段错误.但是,当不在后台运行时,一切正常.这是gem中的一行,导致错误:

def self.rjb_initialize
  return if ::Rjb::loaded?
  ::Rjb::load(nil, self.jvm_args) #THIS IS WHERE THE ERROR TRACES TO
  set_java_logging if self.log_file
end
Run Code Online (Sandbox Code Playgroud)

宝石加载.jar文件,你可以看到,但同样,一切都很完美,当不在后台时.什么可能导致问题,是否可以修复它?

Mar*_*arc 0

鉴于该错误在作为后台任务运行时似乎失败,这很可能是由于未设置环境变量造成的。根据文档,为了在 Rails 中使用 rjb,需要 LD_LIBRARY_PATH 和 JAVA_HOME 设置。我认为您可以将它们添加到您的environment.rb中并确保使用任务 'resque:setup' => :environment来加载 Rails 环境。