我几乎失去了,所以我不能完全肯定这将是对这个问题有用的信息,但我想成为一些静态资产对于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.rb
: Rails.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。
是的,就是这样。我实际上设法修复它,但忘了回答我自己的问题...也忘了我应该用主动支持记录器替换那条线,而不是仅仅将它留下注释,嘿,所以感谢提醒。 – RocketGuy3