使用 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 应用调试工具,具有简单的设置和简单的调试指南。试一试。