【问题标题】:How to access Sinatra Logger from a model?如何从模型访问 Sinatra Logger?
【发布时间】:2013-05-09 22:17:01
【问题描述】:

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

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

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

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

get '/' do
  Foo.do_something
  ...

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

【问题讨论】:

    标签: ruby sinatra


    【解决方案1】:

    看来你想做

    class Foo < Sinatra::Base
    

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

    【讨论】:

      【解决方案2】:

      @Bjoern 的回答会起作用,但我想这会使Foo 成为控制器而不是模型。另一种方法是在 Sinatra 为您设置一个记录器之前初始化一个记录器,然后将其传递给它以供使用。一种方法可能是:

      class Foo
        def self.logger
          @logger ||= Logger.new STDOUT
        end
      end
      
      configure do
        set :logger, Foo.logger
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-07
        • 1970-01-01
        • 2013-05-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多