2012-09-12 7 views
5

के साथ पेपरक्लिप हाल ही में मैं जेआरबी पर चलाने के लिए अपने रेल ऐप का अनुकूलन कर रहा था। पेपरक्लिप के साथ मुझे मिली समस्याओं में से एक था। पेपरक्लिप 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 

वहाँ पेपरक्लिप JRuby के साथ सुचारू रूप से काम करने के लिए कोई तरीका है? मैं अपने ऐप को केवल लिनक्स पर चला रहा हूं, इसलिए मुझे ImageMagick जैसे लिनक्स मूल उपकरण का उपयोग करने में कोई फर्क नहीं पड़ता।

रेल 3.2.8, JRuby 1.6.7.2

उत्तर

2

पेपरक्लिप और कोकीन कोड में कुछ खुदाई के बाद मैं एक प्रारंभकर्ता जो कोकीन जब JRuby

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

हालांकि मैं BackticksRunner उपयोग करने के लिए बंदर-पैच लिखा था मैं एक क्लीनर समाधान की तलाश में हूँ।

2

एफडब्ल्यूआईडब्ल्यू, मैंने सिर्फ कोकीन के एक मास्टर को मास्टर किया जो आपको रनर को मैन्युअल रूप से ओवरराइड करने की अनुमति देगा।

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

मैं क्यों JRuby की रिपोर्ट है कि Process.spawn उपलब्ध है जब यह नहीं है पता नहीं है, लेकिन कम से कम हम एक समाधान है।

+1

उपरोक्त कोड में छोटी त्रुटि, यह होना चाहिए: कोकीन :: कमांडलाइन.रुनर = कोकीन :: कमांडलाइन :: बैकटिक्सरुनर.न्यू – cthulhu

6

यह अभी भी JRuby 1.7 में एक समस्या है। JRuby के लिए caveatCocaine गिथब पृष्ठ पर नोट किया गया है जो इसे JRuby समस्या के रूप में परिभाषित करता है। मेरे लिए, इस लेखन के रूप में, एक ही रास्ता यह काम करने के लिए के रूप में कोकीन Github पेज के Runners खंड में बताया गया है

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

उपयोग करने के लिए किया गया था।

+0

मुझे यह समस्या है लेकिन मुझे समझ में नहीं आता कि मुझे इसका उपयोग कहां या कैसे करना चाहिए। कोई अंतर्दृष्टि? – Automatico

+0

मैंने फ़ाइल 'प्रोजेक्ट/कॉन्फ़िगरेशन/एनवायरमेंट्स/test.rb' में अपने उत्तर में लाइन डाली – nathan

संबंधित मुद्दे