首页 > 解决方案 > Rails Passenger Phusion:错误未知协议级别:6(SocketError)

问题描述

我正在使用 capistrano 在服务器(apache+passenger 集成)上成功部署 rails 应用程序,但该应用程序没有运行。我收到乘客错误:

unknown protocol level: 6 (SocketError)
  /usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler.rb:317:in `setsockopt'
  /usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler.rb:317:in `create_tcp_socket'
  /usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler.rb:112:in `initialize'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:135:in `new'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:135:in `negotiate_spawn_command'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:158:in `<module:App>'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:30:in `<module:PhusionPassenger>'
  /usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<main>'

有谁知道我可以在哪里看/我应该检查什么来诊断/解决这个错误?

标签: ruby-on-railsapachepassenger

解决方案


我已经设法解决了这个问题。在使用 capistrano 部署期间,每当类 Fixnum 中不存在方法 to_str 时,我都会在 gem 中出错。作为一种解决方法,我定义了这个类:

class Fixnum
  def to_str
    to_s
  end
end

这个定义解决了我的每次部署问题,但它弄乱了乘客功能,结果可以在最初的问题中看到。


推荐阅读