Skip to content

Commit 1f63487

Browse files
authored
Merge pull request #381 from rossta/improve_error_message_for_logger_silence
Add useful message for logger silence error
2 parents 7137bb1 + 673fe08 commit 1f63487

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

lib/sprockets/rails/quiet_assets.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
module Sprockets
22
module Rails
3+
class LoggerSilenceError < StandardError; end
4+
35
class QuietAssets
46
def initialize(app)
57
@app = app
@@ -8,11 +10,23 @@ def initialize(app)
810

911
def call(env)
1012
if env['PATH_INFO'] =~ @assets_regex
13+
raise_logger_silence_error unless ::Rails.logger.respond_to?(:silence)
14+
1115
::Rails.logger.silence { @app.call(env) }
1216
else
1317
@app.call(env)
1418
end
1519
end
20+
21+
private
22+
def raise_logger_silence_error
23+
error = "You have enabled `config.assets.quiet`, but your `Rails.logger`\n"
24+
error << "does not use the `LoggerSilence` module.\n\n"
25+
error << "Please use a compatible logger such as `ActiveSupport::Logger`\n"
26+
error << "to take advantage of quiet asset logging.\n\n"
27+
28+
raise LoggerSilenceError, error
29+
end
1630
end
1731
end
1832
end

test/test_quiet_assets.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@ def test_does_not_silence_without_match
4343
assert_equal Logger::DEBUG, middleware.call("PATH_INFO" => "/path/to/thing")
4444
end
4545

46+
def test_logger_does_not_respond_to_silence
47+
::Rails.logger.stub :respond_to?, false do
48+
assert_raises(Sprockets::Rails::LoggerSilenceError) { middleware.call("PATH_INFO" => "/assets/stylesheets/application.css") }
49+
end
50+
end
51+
4652
private
4753

4854
def middleware

0 commit comments

Comments
 (0)