独立Rails控制器ZendeskSessionController用binding.pry调试方法问询
断点未触发的原因及解决方案
断点无法触发有两个核心原因:
- 你的
binding.pry写在了方法隐式返回的后面,永远不会被执行 - 直接运行控制器文件只会完成类定义,不会调用任何实例方法,自然不会触发断点
步骤1:修正断点位置
把zendesk_sso_url方法里的断点移到返回语句之前,修改后的代码如下:
def zendesk_sso_url(payload) url = "https://#{ZENDESK_SUBDOMAIN}.zendesk.com/access/jwt?jwt=#{payload}" url += '&' + { return_to: params['return_to'] }.to_query if params['return_to'].present? binding.pry # 断点移到此处,放在返回url之前 url end
步骤2:确认依赖安装
确保你的Gemfile开发组中已经添加了pry相关依赖:
group :development do gem 'pry-rails' end
添加后执行bundle install完成安装。
步骤3:触发控制器方法执行
有两种常用方式可以触发控制器方法执行,触发后就会自动进入pry调试模式:
- 方式一:通过路由请求触发
- 先在
config/routes.rb中添加对应路由:
post '/zendesk_sso/login', to: 'zendesk_session#create'- 执行
rails s启动本地开发服务 - 通过Postman、浏览器表单等方式向该地址发送带
login、password参数的POST请求即可
- 先在
- 方式二:通过Rails控制台模拟调用(更便捷,无需启动服务)
- 执行
rails c进入Rails控制台 - 依次执行以下代码模拟请求:
# 实例化控制器 controller = ZendeskSessionController.new # 模拟请求参数,替换为你要测试的账号密码 controller.params = ActionController::Parameters.new(login: 'test@example.com', password: 'test123', return_to: 'https://your-domain.com') # 调用create方法,执行后会自动进入断点 controller.create - 执行
内容的提问来源于stack exchange,提问作者user16741832
相关产品推荐
相关产品推荐

