论坛首页 编程语言技术论坛

passenger也可以debug

浏览 2591 次
精华帖 (0) :: 良好帖 (4) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-12-17   最后修改:2009-12-17
最近在做一个东西,要用到subdomain,发现webrick不能支持,所以寻找passenger进行debug的方法。

方法比较土,但还是管用的。

首先,往development.rb里加入
if File.exists?(File.join(RAILS_ROOT,'tmp', 'debug.txt'))
  require 'ruby-debug'
  Debugger.wait_connection = true
  Debugger.start_remote
  File.delete(File.join(RAILS_ROOT,'tmp', 'debug.txt'))
end


接着在lib/task目录下新建restart.rake文件,内容为
task :restart do
  system("touch tmp/restart.txt")
  system("touch tmp/debug.txt") if ENV["DEBUG"] == 'true'
end


目前为止基本上搞定了,不过这些前提是已经安装了ruby-debug,rdebug这个命令可以执行。

这里是nginx,用development模式运行rails,在需要debug的地方加入一行"debugger",debug的时候在这里break。然后运行rake restart DEBUG=true。

打开浏览器,输入可以跑到刚刚输入debugger的url,会发现页面停止在那里。
这个时候,到terminal输入rdebug -c,怎么样,看到熟悉的debug界面了吧?

另外,在home建立一个文件.rdebugrc,设置一下debugger效果会好一些
set autoeval
set autolist
set autoreload
   发表时间:2009-12-20  
这技巧很有用支持一下,目前我大都是在test模式debug了(因为要先把测试跑通),
但有时会遇到一些怪异的平台问题,所以这些技巧在特殊时刻就是镇痛剂啊,感谢分享。
0 请登录后投票
   发表时间:2009-12-20  
非常不错... 正想问这个问题.... 结果就找到答案了... 推荐使用  passenger + pre pannel , 他改变了我的生活.... 
0 请登录后投票
   发表时间:2009-12-21  
其实不仅限于passenger,任何方式都可以用这种方式进行debug。
个人觉得在terminal debug的效果也不亚于在netbeans里debug。
问下ls,什么是pre pannel?
0 请登录后投票
   发表时间:2009-12-30  
学到东西了,看似旁门左道的东西在关键的时刻就能成杀手锏啊~~
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics