2

什么是正确的方法:我有一个可以使用或不使用rails的gem - 如果它在rails中使用,我想重新使用rails-services,例如配置的记录器。如果它在 Rails 之外(例如在 sinatra-app 中),我想从 stdlib 中使用 Logger:什么是 gem 确定的安全方法,如果我们在 rails-app 中?!

我试过这样的方法:

@logger = defined?("Rails") ? eval("Rails.logger") : Logger.new(STDOUT)

但这只会给我一个“未初始化的常量”......

4

1 回答 1

3

很近!删除引号/评估:

@logger = defined?(Rails) ? Rails.logger : Logger.new(STDOUT)

我还鼓励您提供一个配置挂钩,用户可以在其中指定一个Logger兼容的日志接收器。默认值很好,但有时您需要配置一些东西。

于 2013-03-07T16:28:36.890 回答