如何从模型访问Sinatra Logger?

时间:2013-05-09 22:17:01

标签: ruby sinatra

在请求中,Sinatra记录器工作正常:

get '/' do
  logger.info "loading data"
  ...

但是,从模型中,它不起作用。该模型无权访问记录器:

class Foo
  def self.do_something
    logger.info "loading data"
  end
end

get '/' do
  Foo.do_something
  ...

如何从模型中访问记录器?

2 个答案:

答案 0 :(得分:1)

好像你想做

class Foo < Sinatra::Base

因为在您定义的Foo类范围内,logger不可用。

答案 1 :(得分:1)

@ Bjoern的答案会奏效,但我认为这会使Foo成为控制者,而不是模特。另一种方法是在Sinatra为你设置一个记录器之前初始化一个记录器,然后将它传递给它使用。这样做的一种方法可能是:

class Foo
  def self.logger
    @logger ||= Logger.new STDOUT
  end
end

configure do
  set :logger, Foo.logger
end