2013-05-09 71 views
0

在一個請求,西納特拉記錄儀正常工作:如何從模型訪問Sinatra Logger?

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

然而,從模型中,這是行不通的。該型號無法訪問記錄器:

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

get '/' do 
    Foo.do_something 
    ... 

如何從模型中訪問記錄器?

回答

1

似乎你想要做

class Foo < Sinatra::Base 

,因爲記錄是不可用的Foo類的範圍,因爲你定義它。

1

@ Bjoern的答案會有效,但我想這會使Foo成爲控制器而不是模型。另一種方法是在Sinatra爲你設置一個記錄器然後將它傳遞給它使用之前初始化一個記錄器。一種做法可能是:

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

configure do 
    set :logger, Foo.logger 
end