如何在Rails中追溯产量

时间:2012-11-13 17:14:47

标签: ruby-on-rails

假设我正在使用现有的Rails应用程序。分解应用程序的最佳方法是什么?

如果我从 layouts / application.html.erb 开始,我会看到一个或多个<%yield%> 语句。如何轻松地从浏览器中的呈现视图退回到构建产量的底层代码?即:不读取每个视图中的代码。


这不是我在这个问题中寻找的东西,但它可能会帮助其他人在Rails上寻求帮助。我有一段时间一直在使用 rails-footnotes gem。它为页面添加了一个页脚,它有各种有用的信息:实例变量,视图信息甚至是带有时序的SQL语句。

gem'trail-footnotes'来安装

3 个答案:

答案 0 :(得分:2)

如果调试器太复杂,并且您正在寻找更多的跟踪文件,则可以使用默认的日志记录输出。例如,在发出请求时,默认情况下会输出类似于以下内容的输出:

Started GET "/login" for 127.0.0.1 at 2012-11-27 17:52:16 -0600
Processing by SessionsController#create as HTML       
  Rendered sessions/create.html.erb within layouts/application (1.0ms)
  Rendered application/_header.html.erb (1.0ms)
  Rendered application/_wrapper.html.erb (54.0ms)
Completed 200 OK in 150ms (Views: 150.0ms | ActiveRecord: 0.0ms)

如您所见,输出包含已访问的控制器和操作(SessionsController#create),以及为请求呈现的各种部分(例如Rendered sessions/create.html.erb within layouts/application)。 / p>

如果您正在寻找简单性和调试器复杂性之间的东西,您可能希望尝试类似rack-bugmini-profilerrailscast)的内容。

您可能正在寻找的只是一个好的IDE。一些铁路专家可能会嘲笑使用IDE的想法,但我认为它们可以为新手和专家提供许多优势。在您的情况下,您可能会受益于能够轻松设置一个beakpoint,并在执行时直观地单步执行代码,并检查整个过程中的变量内容。我真的很喜欢RubyMine,并且会毫无保留地推荐它(不是免费的,但是免费试用,完全值得花费)。

答案 1 :(得分:1)

您可以使用ruby调试器。

假设您使用的是Ruby 1.9.3(如果您不使用,请回复),您需要执行以下操作:

  • 在您的Gemfile中,添加:gem 'debugger'
  • 保存后运行bundle
  • 在您的控制器中(或您想要使用它的任何地方)将行debugger放在要停止执行代码的位置。

现在通过浏览器点击你的应用程序并查看启动服务器的位置,你应该看到调试提示。

您可能必须以调试模式启动服务器,执行操作如下:

rails server --debugger

Rails Guide - Debugging Rails Applications

答案 2 :(得分:1)

如果只想在要破解的代码中添加raise Exception,那该怎么办呢?这将生成堆栈跟踪。

这是一个非常粗糙的解决方案 - 我倾向于使用@BradWerth建议的记录器 - 事实上,只需Rails日志就足够了。调试器在某些你真正需要深入挖掘的情况下非常有用,但根据我的经验,设置和使用它是一种巨大的痛苦: - )