में एक साधारण वेबसर्वर लिखना मैं रुबी में विकास उद्देश्यों के लिए एक बेहद सरल वेब सर्वर बनाना चाहता हूं (नहीं, तैयार समाधानों का उपयोग नहीं करना चाहता)।रूबी
यहाँ कोड है:
#!/usr/bin/ruby
require 'socket'
server = TCPServer.new('127.0.0.1', 8080)
while connection = server.accept
headers = []
length = 0
while line = connection.gets
headers << line
if line =~ /^Content-Length:\s+(\d+)/i
length = $1.to_i
end
break if line == "\r\n"
end
body = connection.readpartial(length)
IO.popen(ARGV[0], 'r+') do |script|
script.print(headers.join + body)
script.close_write
connection.print script.read
end
connection.close
end
विचार, कमांड लाइन से इस स्क्रिप्ट को चलाने के लिए एक और स्क्रिप्ट है, जो अपने मानक इनपुट पर अनुरोध प्राप्त होगा प्रदान कर रहा है, और पीठ पर पूरा प्रतिक्रिया देता है इसके मानक उत्पादन।
अब तक तो अच्छा है, लेकिन यह पता चला है वास्तव में कमजोर होने के लिए, के रूप में यह त्रुटि के साथ दूसरा अनुरोध पर टूट जाता है:
/usr/bin/serve:24:in `write': Broken pipe (Errno::EPIPE)
from /usr/bin/serve:24:in `print'
from /usr/bin/serve:24
from /usr/bin/serve:23:in `popen'
from /usr/bin/serve:23
किसी भी विचार कितना आसान उपयोग के लिए पर्याप्त होना करने के लिए उपरोक्त कोड में सुधार करने के ?
संस्करण: उबंटू 9.10 (2.6.31-20-सामान्य), रूबी 1.8.7 (2009-06-12 Patchlevel 174) [i486-linux]
जोओ, चूंकि आप और मुझे ऐसे अलग-अलग परिणाम मिल रहे हैं, शायद आपको अपने रूबी और ओएस संस्करणों में अपने प्रश्न में जोड़ना चाहिए। –
मैंने संस्करण जोड़े हैं। –