rails / sprockets-rails

Sprockets Rails integration
MIT License
579 stars 244 forks source link

Rails Logger and Sprockets aren't compatible in 5.1.4 #423

Closed cshupp1 closed 1 year ago

cshupp1 commented 6 years ago

This problem is being observed on Windows 10 with JRuby 9.1.15.0. A full gem list is at the bottom.

When bringing up rails the following code in quiet_assets.rb:

module Sprockets
  module Rails
    class QuietAssets
      def initialize(app)
        @app = app
        @assets_regex = %r(\A/{0,2}#{::Rails.application.config.assets.prefix})
      end

      def call(env)
        if env['PATH_INFO'] =~ @assets_regex
          ::Rails.logger.silence { @app.call(env) } #<---BOMB!!  silence is not present
        else
          @app.call(env)
        end
      end
    end
  end
end

results in the following exception:

org.jruby.exceptions.RaiseException: (NoMethodError) undefined method `silence' for #<Logger:0xa23006d>
    at C_3a_.work.VSO.gem_home.gems.sprockets_minus_rails_minus_3_dot_2_dot_1.lib.sprockets.rails.quiet_assets.call(C:/work/VSO/gem_home/gems/sprockets-rails-3.2.1/lib/sprockets/rails/quiet_assets.rb:11)
    at C_3a_.work.VSO.gem_home.gems.actionpack_minus_5_dot_1_dot_4.lib.action_dispatch.middleware.remote_ip.call(C:/work/VSO/gem_home/gems/actionpack-5.1.4/lib/action_dispatch/middleware/remote_ip.rb:79)
    at C_3a_.work.VSO.gem_home.gems.actionpack_minus_5_dot_1_dot_4.lib.action_dispatch.middleware.request_id.call(C:/work/VSO/gem_home/gems/actionpack-5.1.4/lib/action_dispatch/middleware/request_id.rb:25)
    at C_3a_.work.VSO.gem_home.gems.rack_minus_2_dot_0_dot_3.lib.rack.method_override.call(C:/work/VSO/gem_home/gems/rack-2.0.3/lib/rack/method_override.rb:22)
    at C_3a_.work.VSO.gem_home.gems.rack_minus_2_dot_0_dot_3.lib.rack.runtime.call(C:/work/VSO/gem_home/gems/rack-2.0.3/lib/rack/runtime.rb:22)
    at C_3a_.work.VSO.gem_home.gems.activesupport_minus_5_dot_1_dot_4.lib.active_support.cache.strategy.local_cache_middleware.call(C:/work/VSO/gem_home/gems/activesupport-5.1.4/lib/active_support/cache/strategy/local_cache_middleware.rb:27)
    at C_3a_.work.VSO.gem_home.gems.actionpack_minus_5_dot_1_dot_4.lib.action_dispatch.middleware.executor.call(C:/work/VSO/gem_home/gems/actionpack-5.1.4/lib/action_dispatch/middleware/executor.rb:12)
    at C_3a_.work.VSO.gem_home.gems.actionpack_minus_5_dot_1_dot_4.lib.action_dispatch.middleware.static.call(C:/work/VSO/gem_home/gems/actionpack-5.1.4/lib/action_dispatch/middleware/static.rb:125)
    at C_3a_.work.VSO.gem_home.gems.rack_minus_2_dot_0_dot_3.lib.rack.sendfile.call(C:/work/VSO/gem_home/gems/rack-2.0.3/lib/rack/sendfile.rb:111)
    at C_3a_.work.VSO.gem_home.gems.webpacker_minus_3_dot_2_dot_0.lib.webpacker.dev_server_proxy.perform_request(C:/work/VSO/gem_home/gems/webpacker-3.2.0/lib/webpacker/dev_server_proxy.rb:18)
    at C_3a_.work.VSO.gem_home.gems.rack_minus_proxy_minus_0_dot_6_dot_3.lib.rack.proxy.call(C:/work/VSO/gem_home/gems/rack-proxy-0.6.3/lib/rack/proxy.rb:57)
    at C_3a_.work.VSO.gem_home.gems.railties_minus_5_dot_1_dot_4.lib.rails.engine.call(C:/work/VSO/gem_home/gems/railties-5.1.4/lib/rails/engine.rb:522)
    at uri_3a_classloader_3a_.rack.handler.servlet.call(uri:classloader:/rack/handler/servlet.rb:22)

Workaround, in development.rb

  # Suppress logger output for asset requests.
   config.assets.quiet = false

Gem list:

*** LOCAL GEMS ***

actioncable (5.1.4)
actionmailer (5.1.4)
actionpack (5.1.4)
actionview (5.1.4)
activejob (5.1.4)
activemodel (5.1.4)
activerecord (5.1.4)
activerecord-oracle_enhanced-adapter (1.8.2)
activesupport (5.1.4)
addressable (2.5.2)
arel (8.0.0)
builder (3.2.3)
bundler (1.16.1)
concurrent-ruby (1.0.5 java)
connection_pool (2.2.1)
crass (1.0.3)
did_you_mean (default: 1.0.1)
erubi (1.7.0)
execjs (2.7.0)
ffi (1.9.18 java)
globalid (0.4.1)
i18n (0.9.1)
jar-dependencies (default: 0.3.10)
jbuilder (2.7.0)
jruby-jars (9.1.15.0)
jruby-openssl (0.9.21 java)
jruby-rack (1.1.21)
jruby-readline (1.2.0 java)
jruby-win32ole (0.8.5)
json (1.8.3 java)
little-plugger (1.1.4)
logging (2.2.2)
loofah (2.1.1)
mail (2.7.0)
method_source (0.9.0)
mini_mime (1.0.0)
minitest (5.11.1, default: 5.4.1)
multi_json (1.13.0)
net-telnet (default: 0.1.1)
nio4r (2.2.0 java)
nokogiri (1.8.1 java)
power_assert (default: 0.2.3)
psych (2.2.4 java)
public_suffix (3.0.1)
puma (3.11.0 java)
rack (2.0.3)
rack-proxy (0.6.3)
rack-test (0.8.2)
rails (5.1.4)
rails-dom-testing (2.0.3)
rails-html-sanitizer (1.0.3)
railties (5.1.4)
rainbow (2.2.2)
rake (12.3.0, default: 10.4.2)
rb-fsevent (0.10.2)
rb-inotify (0.9.10)
rdoc (default: 4.2.0)
react_on_rails (10.0.2)
ruby-debug-base (0.10.6 java)
ruby-debug-ide (0.6.1.beta9)
ruby-plsql (0.6.0)
rubyzip (1.2.1)
sass (3.5.5)
sass-listen (4.0.0)
sass-rails (5.0.7)
sprockets (3.7.1)
sprockets-rails (3.2.1)
sucker_punch (2.0.4)
test-unit (default: 3.1.1)
therubyrhino (2.0.4)
therubyrhino_jar (1.7.6)
thor (0.20.0)
thread_safe (0.3.6 java)
tilt (2.0.8)
trinidad (1.5.0.B2)
trinidad_jars (1.5.1)
turbolinks (5.1.0)
turbolinks-source (5.1.0)
tzinfo (1.2.4)
tzinfo-data (1.2017.3)
uglifier (4.1.3)
warbler (2.0.4)
webpacker (3.2.0)
webpacker-react (0.3.2)
websocket-driver (0.6.5 java)
websocket-extensions (0.1.3)
nataliethistime commented 4 years ago

Looks like a fix for this has been provided in #381 but never merged. In the meantime I'm setting quiet to false...

ioquatix commented 2 years ago

We just ran into the same issue.

ioquatix commented 1 year ago

This was fixed as #381 was merged.