2012-09-12 27 views
5

Geçtiğimiz günlerde JRuby'de koşmak için raylarım uygulamasına adapte oluyordum. Karşılaştığım sorunlardan biri Paperclip'le oldu. Paperclip JRuby ile sorunsuz çalışması için herhangi bir yolu var mıJRuby ile Paperclip

 
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 

: Paperclip ImageMagick'in gibi komut satırı araçlarını çalıştırmak için Kokain kullanır ve sonuçları Process.spawn kullanır? Uygulamamı yalnızca linux üzerinde çalıştırıyorum, bu yüzden ImageMagick gibi linux yerel araçlarını kullanmamaya özen gösteriyorum.

Raylar 3.2.8, JRuby 1.6.7.2

cevap

2

Paperclip ve Kokain kodunda bazı kazma sonra ben Kokain zaman ben Ancak

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

JRuby

üzerinde BackticksRunner kullanmak maymun yamaları bir başlatıcı yazdı Daha temiz bir çözüm arıyoruz.

2

FWIW, ben sadece Kokain efendisine el Runner geçersiz sağlayacak bir erişimci itti.

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

jruby zaman değil Process.spawn kullanılabilir olduğunu bildiriyor neden bilmiyorum, ama en azından geçici bir çözüm var.

+1

küçük bir hata, bu olmalıdır: Kokain :: CommandLine.runner Kokain :: CommandLine = :: BackticksRunner.new – cthulhu

6

Bu, JRuby 1.7'de hala bir problemdir. JRuby için caveat bir JRuby sorun olarak bu tanımlar Cocaine Github sayfasında belirtildiği yoktur. Benim için bu yazının yazıldığı gibi, tek yol çalışmalarına almak için Kokain Github sayfasının Runners bölümünde belirtildiği gibi

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

kullanmaktı. Yukarıdaki kodda

+0

Ben bu sorunu var ama anlamıyorum nerede ya da ben bu nasıl kullanmaları gerektiğini. Herhangi bir anlayış? – Automatico

+0

Ben dosyasında 'projesi/config/ortamlar/test.rb' benim cevap çizgi koymak – nathan