2012-09-12 4 views
5

최근 JRuby에서 실행되는 레일 앱을 조정하고있었습니다. 내가 만난 문제 중 하나는 Paperclip 때문이었습니다. 종이 클립은 JRuby를 원활하게 작동하도록하기 위해 어떤 방법이 있나요Paperclip with JRuby

 
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 

: 종이 클립은 ImageMagick과 같은 명령 행 도구를 실행 코카인을 사용하며,이 결과 Process.spawn를 사용? 나는 리눅스에서만 내 애플 리케이션을 실행하고있어, 그래서 ImageMagick과 같은 리눅스 네이티브 도구를 사용하여 상관 없어.

레일 3.2.8, JRuby를 1.6.7.2

답변

2

는 종이 클립과 코카인 코드에서 일부 파고 후 나는 코카인 때 나는 '그러나

if RUBY_PLATFORM == 'java' 
    module Cocaine 
    class CommandLine 
     def best_runner 
     BackticksRunner.new 
     end 
    end 
    end 
end 

JRuby를

BackticksRunner를 사용하는 원숭이 - 패치 이니셜 라이저를 썼다 청소기 솔루션을 찾고 있습니다.

2

FWIW, 나는 코카인을 마스터하여 수동으로 러너를 오버라이드 할 수있게 해주는 접근 장치를 넣었습니다.

Cocaine::CommandLine.runner = Cocaine::CommandLine::BackticksRunner.new 

JRuby를가 그렇지 않은 경우 Process.spawn를 사용할 수 있는지보고 이유를 잘 모르겠지만, 적어도 우리가 해결 방법을 가지고있다.

+1

작은 오류, 그것은해야한다 : 코카인 :: CommandLine.runner는 코카인 :: 명령 줄을 = :: BackticksRunner.new – cthulhu

6

이것은 여전히 ​​JRuby 1.7에서 문제가됩니다. 이것을 JRuby 문제로 정의한 Cocaine Github 페이지에 표시된 JRuby 용 caveat이 있습니다. 나를 위해,이 글을 쓰는 현재의 유일한 방법은 작업에 얻을 것은 코카인 Github에서 페이지의 Runners 절에서 언급 한 바와 같이

Cocaine::CommandLine.runner = Cocaine::CommandLine::BackticksRunner.new

를 사용하는 것이 었습니다. 위의 코드에서

+0

나는이 문제를 가지고 있지만 내가 이해하지 못하는 경우 또는 내가 이것을 사용하는 방법. 어떤 통찰력? – Automatico

+0

필자는 필자의 답을 'project/config/environments/test.rb'파일에 놓았습니다. – nathan