1

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

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


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

gem 'rails-footnotes' 安装

4

3 回答 3

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例如 )。

如果您正在寻找介于简单性和调试器复杂性之间的东西,您可能希望尝试使用rack-bugmini-profiler ( railscast ) 之类的东西。

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

于 2012-11-27T23:57:32.263 回答
1

您可以使用 ruby​​ 调试器。

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

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

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

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

rails server --debugger

Rails 指南 - 调试 Rails 应用程序

于 2012-11-27T17:29:32.107 回答
1

只需raise Exception在要中断的代码中的任何位置添加它怎么样。这将生成堆栈跟踪。

这是一个非常粗略的解决方案——我倾向于按照@BradWerth 的建议使用记录器——事实上,通常只使用 Rails 日志就足够了。调试器在您确实需要深入挖掘的某些情况下很有用,但根据我的经验,设置和使用是一件非常痛苦的事情:-)

于 2012-11-29T18:21:25.180 回答