如何设置 PaperTrail 记录器?
How do I set the PaperTrail logger?
我 运行 在从模型的 table.
中删除一列后尝试具体化 PaperTrail 版本时遇到了问题
堆栈跟踪开始:private method 'warn' called for nil:NilClass
并指出 reify
方法中的以下几行:
# Set all the attributes in this version on the model.
attrs.each do |k, v|
if model.has_attribute?(k)
model[k.to_sym] = v
elsif model.respond_to?("#{k}=")
model.send("#{k}=", v)
else
logger.warn "Attribute #{k} does not exist on #{item_type} (Version id: #{id})."
end
end
因为我已经从 table 中删除了该列,所以我登陆了逻辑树的 else
块,这看起来非常合理......我很好地记录了这一点继续前进与具体化。
但是,我不明白为什么 logger
首先是 nil
。我在哪里以及如何设置 PaperTrail 记录器,以便我们简单地记录行为而不是使应用程序崩溃?
我想出了两种方法来实现这一点。
1) 通过覆盖 PaperTrail::Version
class
module PaperTrail
class Version < ActiveRecord::Base
include PaperTrail::VersionConcern
def logger
Logger.new(STDOUT)
end
end
end
2) 通过在初始化程序中设置 ActiveRecord::Base 的记录器(显然这会影响所有模型,因此您可能希望将日志级别指定为高于调试的级别):
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Base.logger.level = Logger::INFO
想知道是否还有其他推荐方法,但这些方法目前似乎对我有用。
截至 2016-12-14 答案是升级到 PT 6.0.2。
这已在 PT 6.0.2 中修复,感谢 Andy 的 PR https://github.com/airblade/paper_trail/pull/905(OP。谢谢,Andy)
我 运行 在从模型的 table.
中删除一列后尝试具体化 PaperTrail 版本时遇到了问题堆栈跟踪开始:private method 'warn' called for nil:NilClass
并指出 reify
方法中的以下几行:
# Set all the attributes in this version on the model.
attrs.each do |k, v|
if model.has_attribute?(k)
model[k.to_sym] = v
elsif model.respond_to?("#{k}=")
model.send("#{k}=", v)
else
logger.warn "Attribute #{k} does not exist on #{item_type} (Version id: #{id})."
end
end
因为我已经从 table 中删除了该列,所以我登陆了逻辑树的 else
块,这看起来非常合理......我很好地记录了这一点继续前进与具体化。
但是,我不明白为什么 logger
首先是 nil
。我在哪里以及如何设置 PaperTrail 记录器,以便我们简单地记录行为而不是使应用程序崩溃?
我想出了两种方法来实现这一点。
1) 通过覆盖 PaperTrail::Version
class
module PaperTrail
class Version < ActiveRecord::Base
include PaperTrail::VersionConcern
def logger
Logger.new(STDOUT)
end
end
end
2) 通过在初始化程序中设置 ActiveRecord::Base 的记录器(显然这会影响所有模型,因此您可能希望将日志级别指定为高于调试的级别):
ActiveRecord::Base.logger = Logger.new(STDOUT)
ActiveRecord::Base.logger.level = Logger::INFO
想知道是否还有其他推荐方法,但这些方法目前似乎对我有用。
截至 2016-12-14 答案是升级到 PT 6.0.2。
这已在 PT 6.0.2 中修复,感谢 Andy 的 PR https://github.com/airblade/paper_trail/pull/905(OP。谢谢,Andy)