nov*_*ova 31 ruby debugging logging ruby-on-rails sinatra
在我的主要Sinatra控制器中,我想在从表单发布后调试params哈希.
我已经添加了:
puts params.inspect
和
set :logging, :true
params.inspect如果一切顺利,工作.但是如果在执行控制器之前发生错误,我就没有得到任何关于错误的信息,就像我在Rails中默认情况一样.
获得有用的调试信息的最佳方法是什么?
此示例根本不起作用(在我添加此代码后应用程序甚至不会启动):
configure do 
  Log = Logger.new("sinatra.log")
  Log.level  = Logger::INFO 
end
其次是:
Log.info "#{@users.inspect}"
Bar*_*cat 20
您可以尝试添加打印出参数的before过滤器
before do
  puts '[Params]'
  p params
end
inc*_*ude 14
我的意见是,对于debug,你应该使用configure :developmentdo,因为在这种情况下打开了一些调试标志.因此,在您的configure do块下,您可以启用标志:
enable :logging, :dump_errors, :raise_errors
并为您的日志设施:
log = File.new("sinatra.log", "a")
STDOUT.reopen(log)
STDERR.reopen(log)
来自Sinatra手册:
dump_errors选项控制在rack.errors从路由引发异常时是否转储回溯.默认情况下,该选项已为顶级应用启用.
raise_errors  - 允许异常传播到应用程序之外(...):raise_errors默认情况下,对于经典样式应用程序禁用该选项,并且默认情况下为Sinatra :: Base子类启用该选项.
我也用了
puts "something" + myvar.inspect
在我的控制器中间的方法.
asy*_*ric 10
正如@jshen所说,ruby-debug是一个非常好的工具.
为了在Sinatra中使用它,请插入
require 'ruby-debug/debugger' 
你想在哪里调试开始.