ปัญหากับการหยุดทำงานของ WEBrick

นี่คือรายละเอียดเมื่อเริ่มต้นใช้งาน

=> การบูต WEBrick
=> แอปพลิเคชัน Rails 3.0.1 ที่เริ่มต้นในการพัฒนาบน http://0.0.0.0:3000
=> โทรด้วย -d เพื่อแยกออก
=> Ctrl-C เพื่อปิดเซิร์ฟเวอร์ [2011-01-11 13:43:57] INFO WEBrick 1.3.1
[2011-01-11 13:43:57] ข้อมูลทับทิม 1.9.2 (18-08-2553) [i386-mingw32]
[2011-01-11 13:43:57] ข้อมูล WEBrick::HTTPServer#start: pid=10216 พอร์ต =3000

WEBrick ขัดข้องเป็นระยะๆ ข้อความแสดงข้อผิดพลาดเดียวคือ:

ActionController::RoutingError (ไม่มีเส้นทางที่ตรงกับ "/thumbnails/missing.png"):

ข้อความแสดงข้อผิดพลาดนี้เกิดขึ้นเป็นครั้งคราว (ฉันใช้คลิปหนีบกระดาษ) แต่ไม่ทำให้ WEBrick หยุดทำงานทุกครั้งที่เกิดขึ้น ฉันใช้เวลาเล็กน้อยในการพยายามแก้ไขข้อผิดพลาดในการกำหนดเส้นทาง - แต่ยังไม่ได้แก้ไข ฉันไม่คิดว่านั่นเป็นสาเหตุหลักของการหยุดทำงานของ WEBrick เนื่องจากมันไม่ได้เกิดขึ้นทุกครั้ง

ความช่วยเหลือใด ๆ ที่ชื่นชมอย่างมาก


person daz13    schedule 11.01.2011    source แหล่งที่มา


คำตอบ (4)


ขออภัย ฉันไม่ทราบคำตอบสำหรับคำถามของคุณ แต่ฉันสามารถเสนอวิธีแก้ปัญหาที่คุณอาจพอใจได้: ใช้ Mongrel แทน WEBrick Mongrel ทำงานเร็วขึ้นและเข้ากันได้อย่างสมบูรณ์ และอาจจะไม่พังเมื่อไม่พบเส้นทาง นักพัฒนา Rails ส่วนใหญ่ไม่ได้ใช้ WEBrick มาสองสามปีแล้ว

วิธีใช้มองเรล:

gem install mongrel

หาก Rails พบ Mongrel มันจะใช้มันโดยอัตโนมัติ

หวังว่าจะแก้ไขได้!

person Brian Morearty    schedule 12.01.2011
comment
ขอบคุณสำหรับคำแนะนำ Brian ฉันจะลองดู BTW ปรากฏว่าปัญหา WEBrick มาจาก RoutingError... - person daz13; 18.01.2011

Mongrel ไม่สามารถแก้ปัญหาได้ อย่างน้อยใน Windows 7 ที่มี Ruby 1.9.2 p180 และ Rails 3.0.9

ฉันพบว่าชิ้นส่วนโค้ดที่ทำให้เกิดปัญหาคือ (อยู่ใน C:\Ruby192\lib\ruby\gems\1.9.1\gems\railties-3.0.9\lib\rails\rack\log_tailer.rb ):

module Rails
  module Rack
    class LogTailer
      .
      .
      .

      def tail!
        @file.seek @cursor

        if [email protected]?
          contents = @file.read
          @cursor = @file.tell
          $stdout.print contents
        end
      end
    end
  end
end

หากคุณเว้นว่างวิธีนี้ WEBrick จะทำงานได้ดีอีกครั้ง ฉันได้ทำการทดสอบอย่างเข้มข้นโดยมี RoutingError เกิดขึ้นมากมาย

คุณสามารถใช้แพทช์นี้ได้ ใส่ไว้ในไฟล์สภาพแวดล้อม:

module Rails
  module Rack
    class LogTailer

      def tail!

      end
    end
  end
end

ข้อเสียคือ คุณจะไม่เห็นข้อความแก้ไขข้อบกพร่องบนคอนโซลของคุณ

หากต้องการหลีกเลี่ยงปัญหานี้ คุณสามารถใช้ log4r เพื่อส่งข้อความดีบักบนคอนโซลแทนได้

ทำงานเหมือนมีเสน่ห์สำหรับฉัน

person Tanin    schedule 11.07.2011

ดูเหมือนว่า Webrick จะขัดข้องหลังจากเกิดข้อผิดพลาด/คำเตือนที่พิมพ์ไปยังตัวบันทึก STDOUT ฉันแก้ไขปัญหาโดยใช้ Thin ซึ่งไม่ได้เข้าสู่ STDOUT

gem install eventmachine --pre
gem install thin
thin start

env: win7x64, ทับทิม 1.9.2 (07-07-2554) [i386-mingw32], Rails 3.0.9

person pavel.mileshchenko    schedule 15.08.2011

โปรดดูสิ่งนี้ด้วย: https://rails.lighthouseapp.com/projects/8994/tickets/5590-rails-30-crashes-ruby-192p0-on-repeated-browser-refresh

ฉันโชคดีกับเซิร์ฟเวอร์ Thin

person Jason    schedule 14.02.2011