Ruby on rails 如何查找或计算每个请求Rails3应用程序控制器内的实例变量数?

Ruby on rails 如何查找或计算每个请求Rails3应用程序控制器内的实例变量数?,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 3.1,在我的rails 3应用程序中,我想知道/计算在控制器操作、视图中的助手方法或ruby调试中实例化的实例变量 我尝试的方法是在视图中放置,重新加载页面并在控制台中: (rdb:25) p controller.instance_variables [:@action_has_layout, :@view_context_class, :@_headers, :@_status, :@_response, :@_request, :@_env, :@lookup_context, :@_acti

在我的rails 3应用程序中,我想知道/计算在控制器操作、视图中的助手方法或ruby调试中实例化的实例变量

我尝试的方法是在视图中放置
,重新加载页面并在控制台中:

(rdb:25) p controller.instance_variables
[:@action_has_layout, :@view_context_class, :@_headers, :@_status, :@_response, :@_request,
 :@_env, :@lookup_context, :@_action_name, :@_response_body, :@tenant, :@_config,
  :@current_user, :@current_account, :@_params, :@station, :@form, :@line, :@enabled_steps, 
  :@stations, :@raw, :@form_to_render, :@locals_hash]
(rdb:25)
我很确定它没有列出我的助手方法中定义的所有实例变量。什么是变量名?我怎样才能访问这些VAR

(rdb:25) p controller.locals_hash
NoMethodError Exception: undefined method `locals_hash' for #<FormsController:0x00000108533cd0>
(rdb:25) p locals_hash
NameError Exception: undefined local variable or method `locals_hash' for #<#<Class:0x00000100c5ef08>:0x000001081fd0e8>
(rdb:25)
(rdb:25)p controller.locals\u散列
NoMethodError异常:未定义的方法“locals\u hash”#
(rdb:25)p本地人\u散列
NameError异常:未定义的局部变量或方法“locals\u hash”#
(rdb:25)

我不知道这个列表是否来自helper。我想说的是,这些都附加到视图中,您可以使用以下方式获取它们:

self.assigns.keys
从视图中的调试器语句

@
变量通常是私有的或没有访问器,这就是为什么您无法轻松访问它们的原因。但请记住,Ruby并不禁止任何事情,并将您视为负责任的开发人员,因此:

  • 例如,没有访问器的实例变量:
    p controller.instance\u variable\u get(:@\u headers)
  • 对于私有方法:使用
    send
    方法

    • 不是对您问题的直接回答,但Pry gem可能对您的调试工作非常有帮助。它允许使用
      cd
      ls
      命令(以及更多命令)轻松“进入”对象