2016-03-30 25 views
0

Windows altında Ruby'de Slack bot yazıyordum ve Linux sunucusunda çalıştırmaya karar verene kadar her şey gayet iyi çalışıyordu. Kabuğuma eriştiğimde ve betiği çalıştırdığımda ön planda doğru çalışır, ancak arka plana taşıdıktan sonra çalışmayı durdurur. Net :: HTTP ile bir HTTP isteğinde veya okunan soketteki bir EOFError'da zaman aşımı hatası alıyorum.Ruby, arka planda çalışırken TCP soketini okuyamaz

Ben ps aux çalıştırırsanız, ben ön plana süreci dönmek kez sadece hataları almak çünkü Debian 7. Ruby süreci kendi başına durur düşünüyorum

Ruby on 2.3 kullanarak ve ediyorum İşlem arka planda olduğunda, listelenen "T" (durdurulmuş) bayrağı vardır.

Linux hakkında daha fazla bilgi sahibi olmak istediğim için, sorunun nasıl çözüleceğine değil, sorunun nedenini bilmek isterim.

DÜZENLEME: Kullanıcı girdi işleyicimin soruna neden olduğunu buldum. İşte sorunlu biraz şudur: gets gibi

def input_handler 
    return Thread.new { 
    loop do 
     user_input = gets.chomp 
    end 
    } 
end 
+0

Bazı kod gönderebilir misiniz? – leobelizquierdo

+0

Arka planda düzgün çalışan çok sayıda Ruby tabanlı HTTP istemcisi ve HTTPd olduğundan Ruby sorunu değil. Sorun, komut dosyanız veya yapılandırmanız ile ilgilidir. Bize daha fazla bilgi vermedikçe, size yardım edemeyiz. –

+0

Yığın Taşması'na Hoş Geldiniz. "Hata ayıklama yardımını arayan sorular (" neden bu kod çalışmıyor? ") Istenen davranışı, belirli bir problemi ya da hatayı ve sorunun kendisinde çoğaltmak için gereken en kısa kodu içermelidir. Diğer okuyuculara bakın: [Minimal, Tam ve Doğrulanabilir bir örnek nasıl oluşturulur?] (http://stackoverflow.com/help/mcve). " –

cevap

0

sorun görünüyor.

Varsayılan olarak gets, STDIN'den okur.

İade (ve $ _ atar) Hiçbir dosya komut satırında varsa ARGV dosyaların listesinde (veya $ *) dan sonraki çizgi veya standart girdiden: The documentation diyor.

kodu/iplik durdurmak ve klavyeden bir istemi için bekleyin veya STDIN yönlendirildi veya komut satırında komut parametre olarak verilen bir dosyadan ise borulu girişten okuyacaktır.

+0

Bu davranışı gerçekten anlamıyorum. Tüm iş parçacığı yerine yalnızca iş parçacığı durup klavye girişini beklememeli mi? – Armadillomon

İlgili konular