2016-08-04 43 views
1

我幾乎失去了,所以我不能完全肯定這將是對這個問題有用的信息,但我想成爲一些靜態資產對於rails中的角度應用程序,包括作爲我自己和第三方JS,HTML和CSS。我創建了一個名爲third_party目錄assets在我的所有涼亭安裝的組件去下,和一個稱my_app爲自己的客戶端代碼。無法在rails 5.0上提供靜態資產。 「超:沒有一種方法`silence`爲#<記錄器:0x00000004bd78c0>」

我需要在main_app.js文件進行必要的代碼app/assets/javascript

//= 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 E中的資產正在通過定製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))

相關問題