适用于Sinatra + DataMapper的日志记录设置

时间:2012-01-24 14:35:06

标签: ruby logging sinatra datamapper

我想知道在Sinatra中以DRY方式设置配置块的正确方法是什么。我想要的是:

  • 投入生产时,不要显示例外和错误
  • 在开发中时,将查询记录到DB
  • 在测试时,使用内存中的SQLite db。

我将其设置如下:

configure :production do
  set :show_exceptions, false
  set :raise_errors, false
end

configure :development do
  DataMapper::Logger.new($stdout, :debug)
end

configure :test do
  DataMapper.setup(:default, "sqlite::memory:")
end

但是基础configuration阻止了什么?这是一种正确的方法吗?另外,我无法找到Sinatra中配置块的正确执行顺序。

2 个答案:

答案 0 :(得分:0)

您不需要生产配置,因为这已经是默认设置。否则看起来不错。如果所有环境的设置都为真,则将其置于常规配置块中,如果某个环境特殊,则将其设置为额外块。有关所有细节,请参阅Sinatra自述文件。

答案 1 :(得分:0)

class App < Sinatra::Base

  configure :development do
    enable :logging, :dump_errors, :raise_errors
    disable :show_exceptions
    DataMapper::Logger.new(STDOUT, :debug, '[DataMapper] ')
    DataMapper::Model.raise_on_save_failure = true
  end

  configure :test do
    enable :dump_errors, :raise_errors
    disable :run, :logging, :show_exceptions
  end

  ## Log to file
  # FileUtils.mkdir_p 'log' unless File.exists?('log')
  # log_file = File.new('log/development.log', 'a')

  # $stdout.reopen(log_file)
  # $stderr.reopen(log_file)
  # $stderr.sync = true
  # $stdout.sync = true