簡體   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