使用debug, ruby-debug, logger, rails console多种方法调试Rails程序的总结

 

1、使用debug方法
如果想在view中显示@product的信息,使用

<%= debug(@product)%>
会在网页源码中以YAML格式输出@product所有属性值

 

2、使用ruby-debug gem
ruby 1.9.2以上在GemFile中添加gem ‘ruby-debug19′, :require => ‘ruby-debug’
版本在1.8.7的在GemFile中添加gem ‘ruby-debug’
在要需要调试的地方添加debugger


3、使用logger
logger使用起来很简单,直接在方法中

logger.info 'informational message'
logger级别
debug, info, warn, error, and fatal.

  • logger.debug除错用的讯息,Production环境会忽略
  • logger.info 值得记录的一般讯息
  • logger.warn 值得记录的警告讯息
  • logger.error 错误讯息,但还不到网站无法执行的地步
  • logger.fatal 严重错误到网站无法执行的讯息

默认情况下:开发和测试环境下日志级别为所有(>=debug),生产环境级别为>=info
设置logger级别
在application.rb中添加

config.log_level = Logger::WARN
或者是environment.rb中添加

Rails.logger.level = Logger::WARN

在方法中添加:Rails.logger.debug("event: #{@event.inspect}")

打开一个指令视窗执行tail -f log/development.log来观察log档案,接着开浏览器跑实际跑过这段程式,你就会在log/development.log看到信息了

 
过滤敏感信息
敏感信息不记录到日志,如password

class ApplicationController < ActionController::Base filter_parameter_logging :password end
以上将会使log中所有匹配/password/i的参数以[FILTERED]代替

filter_parameter_logging 只过滤ActionController 请求信息. 参数可能仍会在ActiveRecord生成的SQL语句log中。不过SQL语句在生产环境默认不会记录log.

在rails console中显示执行的ActiveRecord日志,里面包括SQL语句:

ActiveRecord::Base.logger = Logger.new(STDOUT)
在rails console中显示执行的ActiveRecord日志,里面包括SQL语句:

ActionController::Base.logger = Logger.new(STDOUT)


转载自:http://rubyer.me/blog/352/