2016-06-13 19 views
0

駆除警告:PaperTrail.track_associationsは設定されていません。 PaperTrail 5以降、デフォルトはfalseです。関連付けの追跡は実験的な機能なので、config/initializers/paper_trail.rbでPaperTrail.config.track_associations = falseを設定することをお勧めします。これがあるのでSinatraアプリでPaperTrail gemの警告を抑制する方法は?

: 実行オプション(/Users/george/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:68で必要から呼び出されました) 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

これが起こっている理由は、PaperTrail.configオブジェクトの初期化require 'paper_trail'への呼び出しによるものである:thisファイルでthis行の結果が必要なばかりは、a part of whichconfigシングルトンを初期化することで結果として実行されます。これを解決するには、最初に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 

とモデルは、任意の変更は必要ありません。require 'paper_trail'コールが実行されますとき

# models/article.rb 

require 'paper_trail' 

class Article < ActiveRecord::Base 
    has_paper_trail 
end 

はこのように、私たちは既に正しい構成を設定していると警告が表示されませんが。

+0

驚くばかりです。あなたはどうやってこのことを理解しましたか? –

+0

私はベアボーンアプリhttps://github.com/kgrz/37797571を作成し、Papertrailのコードをチェックアウトしました。そして多くの 'puts'がデバッグを駆動しました:D – Kashyap

+0

うわー、それは大きな仕事でした。ありがとうございました!!!少なくとも私は次回にそれを理解する方法を知っています。 –

0

class Applicationの定義でPaperTrail.config.track_associations = false~config/application.rbを追加しました。

関連する問題