使用 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 應用除錯工具,具有簡單的設定和簡單的除錯指南。試一試。