使用 pry 调试 ruby-on-rails 应用程序

pry 是一个功能强大的工具,可用于调试任何 ruby 应用程序。使用这个 gem 设置 ruby-on-rails 应用程序非常简单直接。

建立

使用 pry 开始调试应用程序

  • gem 'pry'添加到应用程序的 Gemfile 并绑定它
group :development, :test do
  gem 'pry'
end
  • 导航到终端控制台上的应用程序根目录并运行 bundle install。你已准备好开始在应用程序的任何位置使用它。

使用

在你的应用程序中使用 pry 只是在调试时要在检查的断点上包含 binding.pry。你可以在应用程序的任何位置添加 binding.pry 断点,由 ruby interpreter 解释(任何 app / controllers,app / models,app / views 文件)

i)调试控制器

应用程序/控制器/ users_controller.rb

class UsersController < ApplicationController
  def show
    use_id = params[:id]
    // breakpoint to inspect if the action is receiving param as expected
    binding.pry
    @user = User.find(user_id)
    respond_to do |format|
      format.html
    end
  end
end

在此示例中,当你尝试访问 UsersController 上的 show 操作的页面路由时,rails 服务器在断点处暂停一个 pry 控制台。你可以检查 params 对象并从该断点对 User 模型进行 ActiveRecord 查询

ii)调试视图

应用程序/视图/用户/ show.html.haml

%table
  %tbody
    %tr
      %td ID
      %td= @user.id
    %tr
      %td email
      %td= @user.email
    %tr
      %td logged in ?          
      %td
        - binding.pry
        - if @user.logged_in?
          %p= "Logged in"
        - else
          %p= "Logged out"

在此示例中,当 users/show 页面在 rails 服务器中预编译之后,断点会暂停 pry 控制台,然后再将其发送回客户端的浏览器。这个断点允许在行为不端时调试 @user.logged_in? 的正确性。

ii)调试模型

app/models/user.rb

class User < ActiveRecord::Base    
  def full_name
    binding.pry
    "#{self.first_name} #{self.last_name}"
  end      
end

在此示例中,当从应用程序中的任何位置调用此方法时,断点可用于调试 User 模型的实例方法 full_name

总之,pry 是一个功能强大的 rails 应用调试工具,具有简单的设置和简单的调试指南。试一试。