2016-06-13 35 views
0

拒絕警告: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) 運行選項:如何使用Sinatra應用程序抑制PaperTrail gem上的警告?

由於這是不是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' 

這是一個 「經典」 西納特拉的應用程序。

回答

4

爲什麼發生這種情況的原因是由於在對require 'paper_trail'初始化PaperTrail.config對象調用:越來越需要this文件this線的結果,a part of which被執行導致初始化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'呼叫被執行,我們已經擁有了正確的配置設置,將不會顯示警告。

+0

太棒了。你是怎麼弄出來的? –

+0

我創建了一個準系統應用程序https://github.com/kgrz/37797571並簽出了Papertrail的代碼。很多'puts'驅動調試:D – Kashyap

+0

哇,這是一項重要的工作。謝謝!!!至少我知道下一次如何解決它。 –

0

我在class Application的定義中增加了PaperTrail.config.track_associations = falseconfig/application.rb