Ruby on rails 带JRuby的回形针
最近,我正在调整我的rails应用程序以在JRuby上运行。 我遇到的一个问题是回形针。 曲别针使用可卡因来运行命令行工具,如ImageMagick,并使用Process.spawn,其结果是: Errno::ECHILD: No child processes - No child processes waitpid at org/jruby/RubyProcess.java:512 waitpid at org/jruby/RubyProcess.java:497 waitpid at /home/cthulhu/.rvm/gems/jruby-1.6.7.2/gems/cocaine-0.3.0/lib/cocaine/command_line/runners/process_runner.rb:21 call at /home/cthulhu/.rvm/gems/jruby-1.6.7.2/gems/cocaine-0.3.0/lib/cocaine/command_line/runners/process_runner.rb:9 execute at /home/cthulhu/.rvm/gems/jruby-1.6.7.2/gems/cocaine-0.3.0/lib/cocaine/command_line.rb:77 run at /home/cthulhu/.rvm/gems/jruby-1.6.7.2/gems/cocaine-0.3.0/lib/cocaine/command_line.rb:55 run at /home/cthulhu/.rvm/gems/jruby-1.6.7.2/gems/paperclip-3.2.0/lib/paperclip/helpers.rb:29 Errno::ECHILD:无子进程-无子进程 waitpid位于org/jruby/RubyProcess.java:512 waitpid位于org/jruby/RubyProcess.java:497 waitpid-at/home/cthulhu/.rvm/gems/jruby-1.6.7.2/gems/cookine-0.3.0/lib/cookine/command_-line/runner/process_-runner.rb:21 访问/home/cthulhu/.rvm/gems/jruby-1.6.7.2/gems/cookine-0.3.0/lib/cookine/command_-line/runners/process_-runner.rb:9 在/home/cthulhu/.rvm/gems/jruby-1.6.7.2/gems/cookine-0.3.0/lib/cookine/command_-line.rb:77执行 运行于/home/cthulhu/.rvm/gems/jruby-1.6.7.2/gems/cookine-0.3.0/lib/cookine/command_-line.rb:55 运行于/home/cthulhu/.rvm/gems/jruby-1.6.7.2/gems/paperclip-3.2.0/lib/paperclip/helpers.rb:29 有什么方法可以让回形针在JRuby中顺利工作吗?我只在linux上运行我的应用程序,所以我不介意使用像ImageMagick这样的linux本机工具Ruby on rails 带JRuby的回形针,ruby-on-rails,paperclip,jruby,Ruby On Rails,Paperclip,Jruby,最近,我正在调整我的rails应用程序以在JRuby上运行。 我遇到的一个问题是回形针。 曲别针使用可卡因来运行命令行工具,如ImageMagick,并使用Process.spawn,其结果是: Errno::ECHILD: No child processes - No child processes waitpid at org/jruby/RubyProcess.java:512 waitpid at org/jruby/
Rails 3.2.8、JRuby 1.6.7.2在深入研究了回形针和可卡因代码之后,我编写了一个初始化器,猴子可以在JRuby上修补可卡因
if RUBY_PLATFORM == 'java'
module Cocaine
class CommandLine
def best_runner
BackticksRunner.new
end
end
end
end
然而,我仍然在寻找一个更干净的解决方案。FWIW,我刚刚向可卡因大师推了一个访问器,允许您手动覆盖跑步者
Cocaine::CommandLine.runner = Cocaine::CommandLine::BackticksRunner.new
我不知道为什么jruby会报告该进程。spawn在不可用时可用,但至少我们有一个解决方法。这仍然是jruby 1.7中的一个问题。Github页面上有一个关于JRuby的问题,将其定义为JRuby问题。对于我来说,在写这篇文章的时候,让它工作的唯一方法就是使用
cookine::CommandLine.runner=cookine::CommandLine::BackticksRunner.new
正如Cokine Github页面的一节所述。上述代码中的小错误,应该是:Cokine::CommandLine.runner=Cokine::CommandLine::BackticksRunner.new我有这个问题,但我不知道应该在哪里或如何使用它。有什么见解吗?我把答案放在文件“project/config/environments/test.rb”中