2016-08-04 4 views
1

私はかなり紛失していますので、この問題の有用な情報は何かを完全にはわかりませんが、静的資産を提供しようとしています私自身と第三者のJS、HTML、CSSを含むレールの角型アプリのためのものです。 assetsの下にthird_partyと呼ばれるディレクトリを作成しました。そこにはすべて私のインストールされたコンポーネントがあり、自分のクライアントコードにはmy_appというディレクトリがあります。rails 5.0で静的資産を提供できません。 "スーパー:#<Logger:0x00000004bd78c0>のメソッドは無音です"

私はapp/assets/javascriptmain_app.jsファイルに必要なコードが必要です。

//= require jquery 
//= require jquery_ujs 
//= require angular/angular 

<snipped> 

//= require_tree ../my_app/common 
//= require main/index/index 
//= require_tree ../my_app/main 

私はこれらの行と私のapplication.rbファイル内のアセットパスにこれらのディレクトリを追加しました: config.assets.paths << Rails.root.join('app', 'assets', 'third_party') config.assets.paths << Rails.root.join('app', 'assets', 'main_app')

そしてそれらを追加プリコンパイルのステップassets.rbRails.application.config.assets.precompile += %w(main_app.js)

最後に私はhav電子資産は次のようになりますカスタムassets_controllerを経由して提供されている:

class AssetsController < ApplicationController 
    skip_before_filter :verify_authenticity_token 

    def serve_main_asset 
    serve_asset_for_app("main") 
    end 

    protected 

    def serve_asset_for_app(app_name) 
    path = params[:path] 
    respond_to do |format| 
     format.html { render :file => "app/assets/my_app/#{app_name}/#{path}.html", layout: 
      false } 
     format.js { render :file => "#{path}.js" } 
     format.css { render(:file => "#{path}.css") } 
     format.json { render(:file => "app/assets/my_app/#{app_name}/#{path}.json") } 
    end 
    end 
end 

をしかし、私はこれらのファイルのGETいずれかにしようとするたびに、私はこのエラー/スタックトレースを見ています:オン

2016-08-04 01:23:16 -0500: Rack app error handling request { GET /assets/main/index/index.html } 
    #<NoMethodError: super: no superclass method `silence' for #<Logger:0x00000004bd78c0>> 
    /home/pawan/.rvm/gems/ruby-2.2.3/gems/activesupport-5.0.0/lib/active_support/logger.rb:63:in `block (3 levels) in broadcast' 
... 

を私はすべてのキャッシュ無効化ロジックを開発モードでオフにしているとは思っていましたが、アプリは一意のファイル名で資産を提供しようとしています。 (例:bootstrap.self-c8d853976ca268a5391a9470ebdcf3ba43e0b78936cdc925146afcb60a3116be.js

私は問題がちょうど何らかの形の古くなった宝石かもしれないように感じますか? TIA。

答えて

2

私は同じ問題がありました。

問題は、私は、プレーンルビーロガーを(設定/ environmens/development.rb)を使用した:

config.logger = Logger.new('/dev/null') 

それを動作させるために、私はactivesupportのロガーを使用するように変更しました:

config.logger = ActiveSupport::Logger.new('/dev/null') 

これは私のために働いた。

+0

これはまさにそのとおりです。私は実際にそれをしばらく前に修正することができましたが、私自身の質問に答えるのを忘れていました...また、コメントを残しておくよりも、その行をアクティブなサポートロガーに置き換えるべきであることを忘れていました。 – RocketGuy3

0

これは、開発時にアセット要求のログ記録を停止する設定オプションを提供するスプロケットレール宝石の最近の変更が原因です。

development.rbでは、以下の設定で資産ロギングを無効にすることができます。

config.assets.quiet = false

またはその代わりにActiveSupport::Loggerを使用しています。

config.logger = ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new(STDOUT))

関連する問題