ist*_*anp 377 ruby-on-rails ruby-on-rails-3 sprockets asset-pipeline rails-sprockets
默认情况下,在Rails 3.1(RC1)下,链接在(dev)日志中往往非常冗长:
Started GET "/assets/application.css" for 127.0.0.1 at 2011-06-10 17:30:45 -0400
Compiled app/assets/stylesheets/application.css.scss (5ms) (pid 6303)
Started GET "/assets/application.js" for 127.0.0.1 at 2011-06-10 17:30:45 -0400
Compiled app/assets/stylesheets/default.css.scss (15ms) (pid 6303)
...
Started GET "/assets/default/header_bg.gif" for 127.0.0.1 at 2011-06-10 17:30:45 -0400
Served asset /default/header_logo.gif - 304 Not Modified (7ms) (pid 6303)
Served asset /default/header_bg.gif - 304 Not Modified (0ms) (pid 6246)
Served asset /default/footer_bg.gif - 304 Not Modified (49ms) (pid 6236)
...
Run Code Online (Sandbox Code Playgroud)
我想降低冗长程度或完全禁用它.我假设有一种干净的方法来禁用或减少日志记录的详细程度,方法是在ActiveRecord SQL语句中添加一个environment.rb或development.rb类似的配置行config.active_record.logger = nil.
cho*_*eat 382
将以下代码放入 config/initializers/quiet_assets.rb
if Rails.env.development?
Rails.application.assets.try(:logger=, Logger.new('/dev/null'))
Rails::Rack::Logger.class_eval do
def call_with_quiet_assets(env)
previous_level = Rails.logger.level
Rails.logger.level = Logger::ERROR if env['PATH_INFO'] =~ %r{^/assets/}
call_without_quiet_assets(env)
ensure
Rails.logger.level = previous_level
end
alias_method_chain :call, :quiet_assets
end
end
Run Code Online (Sandbox Code Playgroud)
更新:现在也适用于Rails 3.2(以前的尝试修复before_dispatch现在我们将call改为根架)
更新:alias_method_chain来自@macournoyer的适当的Rack中间件解决方案(而不是脆弱的)https://github.com/rails/rails/issues/2639#issuecomment-6591735
rou*_*ute 189
看看https://github.com/evrone/quiet_assets,然后将它包含在您的Gemfile中
对于懒惰: gem 'quiet_assets', group: :development
小智 28
两件事就足够了:
1.config.assets.debug = false在config/enviroments/development.rb
2 rake assets:precompile. 见@oma下面的评论; 这不是必需的
就这样!
col*_*oss 27
最终,它将是,config.assets.logger = nil但该部分目前存在于主人(尚未完成)
Suc*_*oir 12
我知道这是一个丑陋的临时解决方案,但我用它:
tail -f log/development.log | grep -vE'资产'
lul*_*ala 12
很多人对使用感到困惑config.assets.logger = false.这是它做什么,不做什么.
根据源文档:
设置
config.assets.logger为false将关闭服务资产日志记录.
然而,这可能不是你认为的那样.它仅禁用链接"服务"日志,而不禁用 Rails actionpack请求日志.Rails维护者在此解释清楚:https: //github.com/rails/rails/issues/4569#issuecomment-3594500
以链接为例,这样的日志被禁用:
服务资产/jquery.isotope.js - 304未修改(0ms)
但是这样的日志不是
在2012-01-20 23:16:46 -0500开始获取127.0.0.1的"/assets/jquery.isotope.js?body=1"
在config/environment中的development.rb中,您将找到该行config.assets.debug = true.切换到false和大部分资产负载输出都将消失.在我的系统上,只有application.css和.js的两个请求仍然存在.
Rails.application.assets.logger = Logger.new(RUBY_PLATFORM =~ /(win|w)32$/ ? "NUL" : "/dev/null")
Rails::Rack::Logger.class_eval do
def call_with_quiet_assets(env)
previous_level = Rails.logger.level
Rails.logger.level = Logger::ERROR if env['PATH_INFO'].index("/assets/") == 0
call_without_quiet_assets(env).tap do
Rails.logger.level = previous_level
end
end
alias_method_chain :call, :quiet_assets
end
Run Code Online (Sandbox Code Playgroud)
这是@choonkeat添加的相同代码.我刚刚也包括在windows下工作.
在config/environments/development.rb中,请添加:
config.assets.debug = false
config.assets.logger = false
这有助于解决您的问题.
| 归档时间: |
|
| 查看次数: |
53866 次 |
| 最近记录: |