簡體   English   中英

如何在Ruby on Rails中執行期間確定控制器變量的值?

[英]How to determine the value of a controller variable during execution in Ruby on Rails?

在執行期間確定控制器變量值的最佳方法是什么?

例如,有沒有辦法可以在代碼中插入一個中斷,並將變量的值輸出到屏幕(或日志)?

是。 最簡單的方法是將值提升為字符串。 像這樣: raise @foo.to_s

或者,您可以安裝調試器( gem install ruby-debug ),然后使用--debugger標志啟動開發服務器。 然后,在您的代碼中,調用debugger指令。

在調試器提示符中,您有許多命令,包括p來打印變量的值。

更新:這里有關於ruby-debug的更多信息

如果您有一個名為@foo的控制器實例變量,那么在您的控制器中,您可以執行以下操作:

logger.debug "@foo is: #{@foo}"

此外,您可以使用以下方法在視圖模板中輸出值:

<%= debug @foo %>

我更喜歡使用這樣的檢查方法:

raise @foo.inspect

它具有比to_s更多的信息,如屬性值。

Jordi Bunster,John Topley和Jaryl的總結:

I.快捷方式:

raise @foo.inspect

在你的控制器中。 要么

<% raise @foo.inspect %>

在你看來。

II。 正確登錄您的development.log

logger.debug "@foo == #{@foo.inspect}"

III。 完整的調試

安裝調試器( gem install ruby-debug ),然后使用--debugger標志啟動開發服務器。 然后,在您的代碼中,調用debugger指令。

在調試器提示符中,您有許多命令,包括p來打印變量的值。

  1. 添加pry - move到Gemfile:gem'prey gem 'pry-moves'
  2. binding.pry插入要停止的位置
  3. 輸入變量的名稱以查看其值

然后繼續輸入c ,使用n移動到下一行或執行其他調試操作,直到您將解決問題。

如果您只需要查看值,則提出異常是最快的方法,但是值得花時間學習如何正確使用調試器。 您很少需要只看到變量的值,您可能正試圖在代碼中找到錯誤,這就是調試器的用途。

到目前為止,如果您學習如何使用調試器(誰想要讀取日志文件),那么將信息發送到開發日志的速度要慢於其他兩個選項。 使用記錄器進行生產,您將希望看到有人打電話給您並說一切都壞了的價值。

好吧,我通常更喜歡標准的錯誤輸出

$ stderr.print( “什么”)

它簡單而且干得好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM