Ruby/Ruby on Rails中是否有print_r或var_dump等效项?

Dan*_*ski 105 ruby ruby-on-rails

我正在寻找一种转储对象结构的方法,类似于PHP函数print_rvar_dump调试原因.

dbr*_*dbr 130

.inspect任何对象的方法应该格式化正确显示,只需做..

<%= theobject.inspect %>
Run Code Online (Sandbox Code Playgroud)

.methods方法也可以使用:

<%= theobject.methods.inspect %>
Run Code Online (Sandbox Code Playgroud)

<pre>根据数据的不同,将其放入标签可能会有所帮助

  • 对于那些在控制台中寻找更简洁格式的人来说,只是节省时间:`puts theobject.inspect.gsub(",","\n")` (2认同)

Art*_*kii 64

在视图中:

include DebugHelper

...your code...

debug(object)
Run Code Online (Sandbox Code Playgroud)

在控制器,模型和其他代码中:

puts YAML::dump(object)
Run Code Online (Sandbox Code Playgroud)

资源


ujh*_*ujh 8

在视图中,您可以使用<%= debug(yourobject) %>它生成数据的YAML视图.如果您想在日志中使用某些内容,则应使用logger.debug yourobject.inspect.


Mar*_*ski 6

您还可以在Rails控制台下使用YAML :: dump简写(y):

>> y User.first
--- !ruby/object:User 
attributes: 
  created_at: 2009-05-24 20:16:11.099441
  updated_at: 2009-05-26 22:46:29.501245
  current_login_ip: 127.0.0.1
  id: "1"
  current_login_at: 2009-05-24 20:20:46.627254
  login_count: "1"
  last_login_ip: 
  last_login_at: 
  login: admin
attributes_cache: {}

=> nil
>> 
Run Code Online (Sandbox Code Playgroud)

如果您只想预览一些字符串内容,请尝试使用raise(例如在模型,控制器或其他一些不可访问的地方).你得到免费的回溯:)

>> raise Rails.root
RuntimeError: /home/marcin/work/github/project1
    from (irb):17
>> 
Run Code Online (Sandbox Code Playgroud)

我也非常鼓励你尝试ruby-debug:

这非常有帮助!


Tra*_*Liu 5

你可以用puts some_variable.inspect.或者更短的版本:p some_variable.而对于更漂亮的输出,您可以使用awesome_print gem.