uninitialized constant RailsSemanticLogger::Sidekiq (NameError) in upgrade 4.17.0
Opened this issue · 2 comments
Environment
Provide at least:
- Ruby Version. 3.3.4
- Rails Version. 7.1.3.4
- Semantic Logger Version.
- Rails Semantic Logger Version. 4.15.0->4.17.0
- Other Application/framework names and versions (e.g. Puma, etc.).
- sideiq; 6.5.12
- Rails configuration. Only need the settings related to Rails Semantic Logger and Semantic Logger.
- Full Stack Trace, if an exception is being raised.
config/initialize/logger.rb
require "rails_semantic_logger"
Rails.application.config.after_initialize do
Rails.application.config.rails_semantic_logger.add_file_appender = false
Rails.application.config.semantic_logger.add_appender(io: $stdout, formatter: :json)
Rails.application.config.rails_semantic_logger.started = true
Rails.application.config.rails_semantic_logger.processing = true
Rails.application.config.rails_semantic_logger.rendered = true
end
Error Trace
ber s
=> Booting Puma
=> Rails 7.1.3.4 application starting in development
=> Run `bin/rails server --help` for more startup options
Exiting
/Users/hatsu/development/works/sheinc/she_webapp/vendor/bundle/ruby/3.3.0/gems/rails_semantic_logger-4.17.0/lib/rails_semantic_logger/engine.rb:133:in `block in <class:Engine>': uninitialized constant RailsSemanticLogger::Sidekiq (NameError)
::Sidekiq::Job.singleton_class.prepend(RailsSemanticLogger::Sidekiq::Loggable)
^^^^^^^^^
from /Users/hatsu/development/works/sheinc/she_webapp/vendor/bundle/ruby/3.3.0/gems/activesupport-7.1.3.4/lib/active_support/lazy_load_hooks.rb:94:in `block in execute_hook'
from /Users/hatsu/development/works/sheinc/she_webapp/vendor/bundle/ruby/3.3.0/gems/activesupport-7.1.3.4/lib/active_support/lazy_load_hooks.rb:87:in `with_execution_control'
from /Users/hatsu/development/works/sheinc/she_webapp/vendor/bundle/ruby/3.3.0/gems/activesupport-7.1.3.4/lib/active_support/lazy_load_hooks.rb:92:in `execute_hook'
from /Users/hatsu/development/works/sheinc/she_webapp/vendor/bundle/ruby/3.3.0/gems/activesupport-7.1.3.4/lib/active_support/lazy_load_hooks.rb:62:in `block in on_load'
from /Users/hatsu/development/works/sheinc/she_webapp/vendor/bundle/ruby/3.3.0/gems/activesupport-7.1.3.4/lib/active_support/lazy_load_hooks.rb:61:in `each'
from /Users/hatsu/development/works/sheinc/she_webapp/vendor/bundle/ruby/3.3.0/gems/activesupport-7.1.3.4/lib/active_support/lazy_load_hooks.rb:61:in `on_load'
from /Users/hatsu/development/works/sheinc/she_webapp/vendor/bundle/ruby/3.3.0/gems/railties-7.1.3.4/lib/rails/railtie/configuration.rb:66:in `before_initialize'
from /Users/hatsu/development/works/sheinc/she_webapp/vendor/bundle/ruby/3.3.0/gems/rails_semantic_logger-4.17.0/lib/rails_semantic_logger/engine.rb:94:in `<class:Engine>'
from /Users/hatsu/development/works/sheinc/she_webapp/vendor/bundle/ruby/3.3.0/gems/rails_semantic_logger-4.17.0/lib/rails_semantic_logger/engine.rb:5:in `<module:RailsSemanticLogger>'
from /Users/hatsu/development/works/sheinc/she_webapp/vendor/bundle/ruby/3.3.0/gems/rails_semantic_logger-4.17.0/lib/rails_semantic_logger/engine.rb:4:in `<top (required)>'
Note:
- Issues reported here should be related to monkey patches applied to Rails to make it use Semantic Logger.
- For other logging and appender related issues, please report the issue at [Semantic Logger](https://github.com/reidmorrison/semantic_logger/issues.
Expected Behavior
I expected that when I include the rails_semantic_logger
gem with require: false
in my Gemfile
and then manually require it in the initializer, the logging would work without errors.
Here's the relevant code from my Gemfile
:
gem "rails_semantic_logger", require: false
config/initialize/logger.rb
require "rails_semantic_logger"
Rails.application.config.after_initialize do
Rails.application.config.rails_semantic_logger.add_file_appender = false
Rails.application.config.semantic_logger.add_appender(io: $stdout, formatter: :json)
Rails.application.config.rails_semantic_logger.started = true
Rails.application.config.rails_semantic_logger.processing = true
Rails.application.config.rails_semantic_logger.rendered = true
end
bin/rails s
=> Puma starting in single mode...
* Puma version: 6.4.2 (ruby 3.3.4-p94) ("The Eagle of Durango")
* Min threads: 5
* Max threads: 5
* Environment: development
* PID: 48496
* Listening on http://127.0.0.1:3000
* Listening on http://[::1]:3000
Use Ctrl-C to stop
^C- Gracefully stopping, waiting for requests to finish
Actual Behavior
When I run the application with rails_semantic_logger included with require: false, I encounter the following error:
uninitialized constant RailsSemanticLogger::Sidekiq (NameError)
The error seems to indicate that the RailsSemanticLogger::Sidekiq constant is not initialized when the gem is required manually in the initializer.
However, if I remove require: false from the Gemfile, the error does not occur, and the logger works as expected.
Pull Request
- Consider submitting a Pull Request with a fix for the issue.
- This is particularly helpful when running newer Rails versions, since we are not running it yet.
- Or, even a Pull request that only includes a test that reproduces the problem.
Can you post the full stack trace, or at least the parts showing the Semantic Logger portions so that we can see where the error is coming from? Or, if you track it down, would be happy to accept a pull request.
@reidmorrison Thank you. I will send this trace. Let me know if you need any other information.
bin/rails s
=> Booting Puma
=> Rails 7.1.4 application starting in development
=> Run `bin/rails server --help` for more startup options
Exiting
/Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/rails_semantic_logger-4.17.0/lib/rails_semantic_logger/engine.rb:133:in `block in <class:Engine>': uninitialized constant RailsSemanticLogger::Sidekiq (NameError)
::Sidekiq::Job.singleton_class.prepend(RailsSemanticLogger::Sidekiq::Loggable)
^^^^^^^^^
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/activesupport-7.1.4/lib/active_support/lazy_load_hooks.rb:94:in `block in execute_hook'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/activesupport-7.1.4/lib/active_support/lazy_load_hooks.rb:87:in `with_execution_control'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/activesupport-7.1.4/lib/active_support/lazy_load_hooks.rb:92:in `execute_hook'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/activesupport-7.1.4/lib/active_support/lazy_load_hooks.rb:62:in `block in on_load'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/activesupport-7.1.4/lib/active_support/lazy_load_hooks.rb:61:in `each'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/activesupport-7.1.4/lib/active_support/lazy_load_hooks.rb:61:in `on_load'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/railtie/configuration.rb:66:in `before_initialize'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/rails_semantic_logger-4.17.0/lib/rails_semantic_logger/engine.rb:94:in `<class:Engine>'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/rails_semantic_logger-4.17.0/lib/rails_semantic_logger/engine.rb:5:in `<module:RailsSemanticLogger>'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/rails_semantic_logger-4.17.0/lib/rails_semantic_logger/engine.rb:4:in `<main>'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/3.3.0/bundled_gems.rb:74:in `require'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/3.3.0/bundled_gems.rb:74:in `block (2 levels) in replace_require'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/zeitwerk-2.6.18/lib/zeitwerk/kernel.rb:34:in `require'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/rails_semantic_logger-4.17.0/lib/rails_semantic_logger.rb:3:in `<main>'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/3.3.0/bundled_gems.rb:74:in `require'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/3.3.0/bundled_gems.rb:74:in `block (2 levels) in replace_require'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/zeitwerk-2.6.18/lib/zeitwerk/kernel.rb:34:in `require'
from /Users/hatsu/development/practice/rails-7.1/config/initializers/semantic_logger.rb:1:in `<main>'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/engine.rb:690:in `load'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/engine.rb:690:in `block in load_config_initializer'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/activesupport-7.1.4/lib/active_support/notifications.rb:208:in `instrument'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/engine.rb:689:in `load_config_initializer'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/engine.rb:643:in `block (2 levels) in <class:Engine>'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/engine.rb:642:in `each'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/engine.rb:642:in `block in <class:Engine>'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/initializable.rb:32:in `instance_exec'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/initializable.rb:32:in `run'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/initializable.rb:61:in `block in run_initializers'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/3.3.0/tsort.rb:231:in `block in tsort_each'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/3.3.0/tsort.rb:353:in `block (2 levels) in each_strongly_connected_component'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/3.3.0/tsort.rb:425:in `block (2 levels) in each_strongly_connected_component_from'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/3.3.0/tsort.rb:434:in `each_strongly_connected_component_from'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/3.3.0/tsort.rb:424:in `block in each_strongly_connected_component_from'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/initializable.rb:50:in `each'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/initializable.rb:50:in `tsort_each_child'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/3.3.0/tsort.rb:418:in `call'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/3.3.0/tsort.rb:418:in `each_strongly_connected_component_from'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/3.3.0/tsort.rb:352:in `block in each_strongly_connected_component'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/3.3.0/tsort.rb:350:in `each'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/3.3.0/tsort.rb:350:in `call'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/3.3.0/tsort.rb:350:in `each_strongly_connected_component'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/3.3.0/tsort.rb:229:in `tsort_each'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/3.3.0/tsort.rb:208:in `tsort_each'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/initializable.rb:60:in `run_initializers'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/application.rb:426:in `initialize!'
from /Users/hatsu/development/practice/rails-7.1/config/environment.rb:5:in `<main>'
from config.ru:3:in `require_relative'
from config.ru:3:in `block in <main>'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/rack-2.2.9/lib/rack/builder.rb:116:in `eval'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/rack-2.2.9/lib/rack/builder.rb:116:in `new_from_string'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/rack-2.2.9/lib/rack/builder.rb:105:in `load_file'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/rack-2.2.9/lib/rack/builder.rb:66:in `parse_file'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/rack-2.2.9/lib/rack/server.rb:349:in `build_app_and_options_from_config'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/rack-2.2.9/lib/rack/server.rb:249:in `app'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/rack-2.2.9/lib/rack/server.rb:422:in `wrapped_app'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/commands/server/server_command.rb:76:in `log_to_stdout'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/commands/server/server_command.rb:36:in `start'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/commands/server/server_command.rb:145:in `block in perform'
from <internal:kernel>:90:in `tap'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/commands/server/server_command.rb:136:in `perform'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/thor-1.3.2/lib/thor/command.rb:28:in `run'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/thor-1.3.2/lib/thor/invocation.rb:127:in `invoke_command'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/command/base.rb:178:in `invoke_command'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/thor-1.3.2/lib/thor.rb:538:in `dispatch'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/command/base.rb:73:in `perform'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/command.rb:71:in `block in invoke'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/command.rb:149:in `with_argv'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/command.rb:69:in `invoke'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/railties-7.1.4/lib/rails/commands.rb:18:in `<main>'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/3.3.0/bundled_gems.rb:74:in `require'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/3.3.0/bundled_gems.rb:74:in `block (2 levels) in replace_require'
from /Users/hatsu/.rbenv/versions/3.3.4/lib/ruby/gems/3.3.0/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
from bin/rails:4:in `<main>'