2010-06-30 26 views
13

tôi ban đầu được đăng một câu hỏi liên quan đến vấn đề này trên serverfault.com: https://serverfault.com/questions/152587/apache-mod-proxy-to-another-servervấn đề Weird với ứng dụng Rails và mongrel

Tôi đã kể từ khi nhận ra rằng đây không phải là một vấn đề với thiết lập máy chủ của tôi, nhưng ứng dụng ray của tôi. Tôi đã thiết lập ứng dụng này lên máy chủ-khôn ngoan chính xác giống như một ứng dụng ray chức năng tôi đã chạy trên cùng một máy chủ. Khi tôi khởi động server mongrel.log của tôi trông như thế này:

** Daemonized, any open files are closed. Look at /var/www/osuwebdev/tmp/pids/mongrel.pid and log/mongrel.log for info. 
** Starting Mongrel listening at 0.0.0.0:8080 
** Starting Rails with production environment... 
** Rails loaded. 
** Loading any Rails specific GemPlugins 
** Signals ready. TERM => stop. USR2 => restart. INT => stop (no restart). 
** Rails signals registered. HUP => reload (without restart). It might not work well. 
** Mongrel 1.1.5 available at 0.0.0.0:8080 
** Writing PID file to /var/www/osuwebdev/tmp/pids/mongrel.pid 

Khi tôi tải một trang này bật lên trong nhật ký:

Wed Jun 30 19:46:10 +0000 2010: Error calling Dispatcher.dispatch #<NoMethodError: undefined method `[]' for nil:NilClass> 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/cgi.rb:108:in `send_cookies' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/cgi.rb:136:in `out' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/http_response.rb:65:in `start' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/cgi.rb:135:in `out' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/rails.rb:81:in `process' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel.rb:159:in `process_client' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel.rb:158:in `each' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel.rb:158:in `process_client' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel.rb:285:in `run' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel.rb:285:in `initialize' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel.rb:285:in `new' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel.rb:285:in `run' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel.rb:268:in `initialize' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel.rb:268:in `new' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel.rb:268:in `run' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:282:in `run' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:281:in `each' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:281:in `run' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:128:in `run' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/command.rb:212:in `run' 
/var/lib/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:281 
/usr/local/bin/mongrel_rails:19:in `load' 
/usr/local/bin/mongrel_rails:19 

tôi không thể tìm ra những gì là khác nhau về ứng dụng này mà có thể gây ra vấn đề này.

+0

tìm thấy thẻ cũ http://dev.rubyonrails.org/ticket/6716 lỗi tương tự này. Bạn có bất kỳ tuyên bố bao gồm bên ngoài các lớp học của bạn? Bạn cũng kiểm tra tên lớp học của bạn, để đảm bảo rằng bạn không vô tình khỉ vá một lớp học? –

+0

Tôi có mô hình và bộ điều khiển "Tài nguyên", điều đó có thể gây ra nó không? Tôi không tin rằng tôi đang sử dụng bất kỳ báo cáo bao gồm. – trobrock

+0

Tôi đã nhận xét tất cả các mã liên quan đến mô hình "Tài nguyên" và nó không có bất kỳ hiệu ứng nào, tôi cũng không thấy bất kỳ mã nào có trong mã của tôi. – trobrock

Trả lời

0

Bạn vẫn thấy sự cố về các yêu cầu GET tiếp theo? Tôi có một vấn đề tương tự khi ứng dụng Rails của tôi chạy tốt dưới WEBrick nhưng không nằm dưới Mongrel nhưng tìm thấy ở đâu đó trên internets (here's a link cho thấy một phiên bản tương tự của vấn đề) mà các phiên bản cũ hơn của Mongrel xử lý yêu cầu đầu tiên của trang nhưng xử lý tiếp theo yêu cầu ok.

Giải pháp thay thế mà chúng tôi đưa ra là bất cứ khi nào chúng tôi bắt đầu ứng dụng, chúng tôi sẽ có curl thực hiện GET trên ứng dụng đến 'chính' Mongrel.

+0

Đó là mọi yêu cầu – trobrock

0

Đây là thường là lỗi khi đọc tệp yaml để định cấu hình. Nó đã thiết lập một đối tượng cấu hình để lấy các giá trị từ và mục nhập trong tệp yaml cho môi trường của bạn không có ở đó vì vậy đối tượng là không.

Bạn có đang chạy bất kỳ đá quý nào có tệp yaml có thể không được thiết lập để phát triển không?

Tôi không biết tại sao quay lại 2.3.5 sẽ giúp ích - có thể nó tải mọi thứ theo thứ tự khác nhau và thông tin cấu hình có sẵn.

3

Tôi tin rằng đây là một sự kết hợp kỳ lạ của các lỗi trong Rack, Mongrel và Rails.

  1. Lưu mã này ruby ​​trong ứng dụng của bạn để config/mongrel.rb: http://gist.github.com/471663

  2. Trong config/environment.rb của bạn, vào cuối của tập tin add: require File.join(File.dirname(File.expand_path(FILE)), 'mongrel')

  3. Trong đó cùng một tập tin thêm dòng này trong khối Rails :: initializer.run: config.gem "mongrel"

Giải thích dài hơn về sự cố tại đây: https://rails.lighthouseapp.com/projects/8994/tickets/4690-mongrel-doesnt-work-with-rails-238

Điều này chắc chắn đã làm việc cho ứng dụng Rails 2.3.8, mặc dù tôi đã vá nó hơi khác so với mô tả ở trên.

+0

Tôi gặp phải sự cố tương tự trong một ứng dụng sử dụng Rails 2.3.11 vào khoảng tháng 6 năm 2011 và áp dụng thành công cách giải quyết tương tự. Theo mã của tôi, tôi đã nhận được bản vá từ https://gist.github.com/826692. –

+0

@rkb Cảm ơn bạn rất nhiều! Chúng tôi đã gặp phải sự cố tương tự vào tháng 6 năm 2016 trên Rails 2.3.18. Cách giải quyết này vẫn hợp lệ, ngoại trừ việc chúng ta phải thay đổi '2.3.8' bằng' 2.3.18' trên 'config/mongrel.rb' và thêm' require File.join (File.dirname (File.expand_path (__ FILE__)) , 'mongrel') 'vào' config/environment.rb'. Lưu ý rằng hai dấu gạch dưới xung quanh 'FILE' là bắt buộc. – Tsutomu

Các vấn đề liên quan