繁体   English   中英

乘客,nginx和Rails3的问题

[英]Issue with Passenger, nginx and Rails3

我正在运行nginx和passenger来托管Rails 3.2.22站点。 直到最近,它的工作情况还算不错,但是最新的部署却遇到了某种错误。

由于以下错误,nginx / passenger无法正常启动:

App 1542 stderr: /var/lib/gems/1.9.1/gems/actionpack-3.2.22/lib/action_view/helpers/form_options_helper.rb:156:in `select'
App 1542 stderr: :
App 1542 stderr: wrong number of arguments (1 for 3)
App 1542 stderr:  (
App 1542 stderr: ArgumentError
App 1542 stderr: )
App 1542 stderr:        from /var/lib/gems/1.9.1/gems/passenger-5.0.23/src/ruby_supportlib/phusion_passenger/request_handler.rb:483:in `wait_until_termination_requested'
App 1542 stderr:        from /var/lib/gems/1.9.1/gems/passenger-5.0.23/src/ruby_supportlib/phusion_passenger/request_handler.rb:202:in `main_loop'
App 1542 stderr:        from /var/lib/gems/1.9.1/gems/passenger-5.0.23/src/helper-scripts/rack-preloader.rb:159:in `<module:App>'
App 1542 stderr:        from /var/lib/gems/1.9.1/gems/passenger-5.0.23/src/helper-scripts/rack-preloader.rb:30:in `<module:PhusionPassenger>'
App 1542 stderr:        from /var/lib/gems/1.9.1/gems/passenger-5.0.23/src/helper-scripts/rack-preloader.rb:29:in `<main>'

出于我无法理解的原因,乘客似乎在调用action_view助手以进行“选择”。 第156行的action_view帮助器如下所示:

def select(object, method, choices, options = {}, html_options = {})
  InstanceTag.new(object, method, self, options.delete(:object)).to_select_tag(choices, options, html_options)
end

乘客中的呼叫者(request_helper行483)如下所示:

ios = select([@owner_pipe, @graceful_termination_pipe[0]])[0]

这很可能是完全不同的“选择”调用。 我不知道为什么乘客调用了ActionView帮助器的调用(这是一个表单选择)。

事实证明,问题与我对嵌入式红宝石和Resque作业的使用有关。 我有一个延迟执行工作,该工作基于ERb模板执行了一项工作。 为了能够访问某些ERb帮助器方法,我包括以下代码:

include ActionView::Helpers

不幸的是,我将其放在文件的顶部(类似于require )而不是Generator类中。 将语句移到类定义中可以解决此问题。

看来, Passenger包含了作业文件(即使它位于单独的app / jobs目录中,并且仅供Resque使用),这对某些Passenger函数的定义造成了严重破坏。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM