Поместите следующий код в 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
Обновлено: теперь работает и для Rails 3.2 (предыдущие попытки исправляют before_dispatch
, теперь вместо этого мы собираемся использовать корневую стойку call
)
Обновление: правильное решение промежуточного программного обеспечения Rack (вместо хрупкого alias_method_chain
) от @macournoyer https://github.com/rails/rails/issues/2639#issuecomment-6591735
Тот же объект, который вызывает функцию, передается функции как this
параметр.
, Когда объект создается из класса, он содержит только ряд свойств и в объекте нет никакой функции. И функции принадлежат классу. однако, как функция вызвана объектом?
Рассматривают следующий код.
var obj = {
p1: 'property 1',
func1 () {
return this.p1
},
func2 (param) {
return this.p1 + param
}
}
И также вызывают функции obj
объект
obj.func1 ();
obj.func2 ('A');
, компилятор добавляет this
параметр к началу параметров функции. И на самом деле скомпилированные функции следующие.
var obj = {
p1: 'property 1',
func1 (this) {
return this.p1
},
func2 (this, param) {
return this.p1 + param
}
}
И скомпилированный вызов функции также изменяется следующим образом.
func1 (obj);
func2 (obj, 'A');