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