如何查看“更新!”的源代码方法

时间:2018-05-06 15:30:14

标签: ruby debugging memory-leaks introspection

我有一个因内存溢出而被杀的网站。它是在来自用户Web浏览器的PUT请求期间触发的。不幸的是,在这种情况下,日志没有帮助。我已经将问题追溯到这个方法定义:

  # app/controllers/registrations/profiles_controller.rb
  def update
    update! do |success, failure|
      success.html { redirect_to edit_registration_diagnosis_path }
      failure.html do
        build_diagnosis
        render 'edit'
      end
    end
  end

我想查看此update!方法的源代码。我如何询问ruby或rails或bash / grep向我展示这个源代码?

我试过了:

git grep 'def update!'  # no results

我的环境:     $ rails --version     Rails 3.2.22.5     $ ruby​​ --version     红宝石1.9.3p551

2 个答案:

答案 0 :(得分:0)

这些库与您的Rails应用程序不在同一个目录中,它们可以在您的Ruby版本所在的位置,具体取决于您用于安装它的版本管理器。

Rails文档在http://api.rubyonrails.org/处于联机状态,或者您可以使用类似pry-byebug的gem在执行期间进入该方法。由于Ruby是面向对象的并且使用继承链来查找响应给定消息的对象,因此这是在应用程序执行的任何给定点上真正知道调用哪个方法的最佳方法。

gem 'pry-byebug'添加到您的gemfile,捆绑安装,然后在更新方法的顶部插入binding.pry。执行暂停后,您可以轻松进入该方法。

答案 1 :(得分:0)

您可以使用byebug gem查看方法中每个步骤的内容。