如何使用Sinatra app抑制PaperTrail gem上的警告?

时间:2016-06-13 19:20:57

标签: ruby sinatra paper-trail-gem

  

DEPRECATION警告:尚未设置PaperTrail.track_associations。从PaperTrail 5开始,它默认为false。跟踪关联是一项实验性功能,因此我们建议您在config / initializers / paper_trail.rb中设置PaperTrail.config.track_associations = false。 (在/Users/george/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:68上从require调用)   运行选项:

由于这不是Rails应用,因此没有config/initializers/paper_trail.rb。看了https://github.com/airblade/paper_trail/blob/master/lib/generators/paper_trail/install_generator.rb,但没有看到配置文件的生成器。

如果我这样做

require 'paper_trail'
PaperTrail.config.track_associations = false

它仍会发出警告。

也尝试过:

def PaperTrail; end
PaperTrail.config.track_associations = false
require 'paper_trail'

这是一款“经典”Sinatra应用程序。

2 个答案:

答案 0 :(得分:4)

之所以发生这种情况,是因为调用require 'paper_trail'初始化PaperTrail.config对象:this行导致需要this个文件,{{3}执行导致初始化config单例。我们可以先设置配置对象然后再要求顶级paper_trail文件来解决这个问题。

# app.rb

require 'sinatra'
require 'paper_trail/config'

config = PaperTrail::Config.instance
config.track_associations = true

# require models here
Dir["#{Dir.pwd}/models/*.rb"].each { |file| require file }

# rest of app code

这些模型不需要任何改变:

# models/article.rb

require 'paper_trail'

class Article < ActiveRecord::Base
  has_paper_trail
end

因此,当执行require 'paper_trail'调用时,我们已经拥有正确的配置设置,并且不会显示警告。

答案 1 :(得分:1)

我在PaperTrail.config.track_associations = false的定义中向config/application.rb添加了class Application