[英]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
來打印變量的值。
gem 'pry-moves'
binding.pry
插入要停止的位置 然后繼續輸入c
,使用n
移動到下一行或執行其他調試操作,直到您將解決問題。
如果您只需要查看值,則提出異常是最快的方法,但是值得花時間學習如何正確使用調試器。 您很少需要只看到變量的值,您可能正試圖在代碼中找到錯誤,這就是調試器的用途。
到目前為止,如果您學習如何使用調試器(誰想要讀取日志文件),那么將信息發送到開發日志的速度要慢於其他兩個選項。 使用記錄器進行生產,您將希望看到有人打電話給您並說一切都壞了的價值。
好吧,我通常更喜歡標准的錯誤輸出
$ stderr.print( “什么”)
它簡單而且干得好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.