Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

uninitialized constant Sidekiq::Rails::Reloader after upgrading to Rails 5.0.0.1 #3275

Closed
31piy opened this issue Dec 12, 2016 · 9 comments
Closed

Comments

@31piy
Copy link

31piy commented Dec 12, 2016

I just upgraded from Rails 4.2.6 to Rails 5.0.0.1. I have the following configuration for Sidekiq UI in config/routes.rb:

if Rails.application.queuing_enabled?
  require 'sidekiq/web'
  Sidekiq::Web.set :session_secret, Rails.application.secrets[:secret_key_base]
      
  authenticate :user, ->(u) { u.admin? } do
    mount Sidekiq::Web => '/sidekiq'
  end
end

The value of Rails.application.queuing_enabled? will always be true in production mode, but false in development and test. My local machine runs in development mode.

After upgrading, I am facing the below error when I run anything on my local (tried running rspec, rails middleware, rails server etc.):

/home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/sidekiq-4.2.7/lib/sidekiq/rails.rb:73:in `block in <class:Rails>': uninitialized constant Sidekiq::Rails::Reloader (NameError)
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.0.1/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.0.1/lib/active_support/lazy_load_hooks.rb:28:in `block in on_load'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.0.1/lib/active_support/lazy_load_hooks.rb:27:in `each'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.0.1/lib/active_support/lazy_load_hooks.rb:27:in `on_load'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/railtie/configuration.rb:69:in `after_initialize'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/sidekiq-4.2.7/lib/sidekiq/rails.rb:60:in `<class:Rails>'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/sidekiq-4.2.7/lib/sidekiq/rails.rb:34:in `<module:Sidekiq>'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/sidekiq-4.2.7/lib/sidekiq/rails.rb:2:in `<top (required)>'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/sidekiq-4.2.7/lib/sidekiq.rb:237:in `<top (required)>'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/sidekiq-4.2.7/lib/sidekiq/web.rb:4:in `<top (required)>'
	from /home/git/config/routes.rb:69:in `block in <top (required)>'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0.1/lib/action_dispatch/routing/route_set.rb:389:in `instance_exec'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0.1/lib/action_dispatch/routing/route_set.rb:389:in `eval_block'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/actionpack-5.0.0.1/lib/action_dispatch/routing/route_set.rb:371:in `draw'
	from /home/git/config/routes.rb:3:in `<top (required)>'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/application/routes_reloader.rb:40:in `block in load_paths'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/application/routes_reloader.rb:40:in `each'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/application/routes_reloader.rb:40:in `load_paths'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/application/routes_reloader.rb:16:in `reload!'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/application/routes_reloader.rb:26:in `block in updater'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.0.1/lib/active_support/file_update_checker.rb:77:in `execute'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/application/routes_reloader.rb:27:in `updater'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/application/routes_reloader.rb:7:in `execute_if_updated'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/application/finisher.rb:119:in `block in <module:Finisher>'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/initializable.rb:30:in `instance_exec'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/initializable.rb:30:in `run'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/initializable.rb:55:in `block in run_initializers'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tsort.rb:228:in `block in tsort_each'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tsort.rb:431:in `each_strongly_connected_component_from'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tsort.rb:349:in `block in each_strongly_connected_component'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tsort.rb:347:in `each'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tsort.rb:347:in `call'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tsort.rb:347:in `each_strongly_connected_component'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tsort.rb:226:in `tsort_each'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tsort.rb:205:in `tsort_each'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/initializable.rb:54:in `run_initializers'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/application.rb:352:in `initialize!'
	from /home/git/config/environment.rb:5:in `<top (required)>'
	from /home/git/config.ru:3:in `require_relative'
	from /home/git/config.ru:3:in `block in <main>'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rack-2.0.1/lib/rack/builder.rb:55:in `instance_eval'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rack-2.0.1/lib/rack/builder.rb:55:in `initialize'
	from /home/git/config.ru:in `new'
	from /home/git/config.ru:in `<main>'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rack-2.0.1/lib/rack/builder.rb:49:in `eval'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rack-2.0.1/lib/rack/builder.rb:49:in `new_from_string'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rack-2.0.1/lib/rack/builder.rb:40:in `parse_file'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rack-2.0.1/lib/rack/server.rb:318:in `build_app_and_options_from_config'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rack-2.0.1/lib/rack/server.rb:218:in `app'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/server.rb:59:in `app'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/rack-2.0.1/lib/rack/server.rb:353:in `wrapped_app'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/server.rb:124:in `log_to_stdout'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/server.rb:77:in `start'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:90:in `block in server'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:85:in `tap'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:85:in `server'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/commands.rb:18:in `<top (required)>'
	from /home/git/bin/rails:9:in `require'
	from /home/git/bin/rails:9:in `<top (required)>'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/spring-2.0.0/lib/spring/client/rails.rb:28:in `load'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/spring-2.0.0/lib/spring/client/rails.rb:28:in `call'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/spring-2.0.0/lib/spring/client/command.rb:7:in `call'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/spring-2.0.0/lib/spring/client.rb:30:in `run'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/spring-2.0.0/bin/spring:49:in `<top (required)>'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/spring-2.0.0/lib/spring/binstub.rb:31:in `load'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/spring-2.0.0/lib/spring/binstub.rb:31:in `<top (required)>'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:68:in `require'
	from /home/piyush/.rbenv/versions/2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:68:in `require'
	from /home/git/bin/spring:14:in `<top (required)>'
	from bin/rails:3:in `load'
	from bin/rails:3:in `<main>'

My Gemfile.lock has the following versioning info for Sidekiq.

sidekiq (4.2.7)
  concurrent-ruby (~> 1.0)
  connection_pool (~> 2.2, >= 2.2.0)
  rack-protection (>= 1.5.0)
  redis (~> 3.2, >= 3.2.1)
sidekiq-limit_fetch (3.4.0)
  sidekiq (>= 4)

I am using ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-linux]. Raised this question on StackOverflow as well, but no luck. Please help!

@mperham
Copy link
Collaborator

mperham commented Dec 12, 2016

If your local machine has queuing disabled, why is it trying to load sidekiq/web? I suspect that's the core of the problem: you've disabled some part of Sidekiq but now you're trying to load another part and that's causing this weird error.

You can try master to see if it solves the problem.

@31piy
Copy link
Author

31piy commented Dec 13, 2016

@mperham Well, here is the configuration of my Gemfile related to Sidekiq:

group :production do
  gem 'sidekiq'
  gem 'sidekiq-limit_fetch'
  gem 'sinatra', require: false # for Sidekiq UI
  gem 'dalli'
end

As you can see that I am using Sidekiq in production group, and in my routes, I have this line:

if Rails.application.queuing_enabled?
# ...
end

Since Rails.application.queuing_enabled? is false, I think Sidekiq should not have loaded in development mode at all. This config worked perfectly till Rails v4.2.7.1, but broke as soon as I switched to Rails v5.0.0.1.

BTW, using master solved this problem. 👍

@31piy
Copy link
Author

31piy commented Dec 19, 2016

@mperham When can I expect the next release with this fix?

@mperham
Copy link
Collaborator

mperham commented Dec 19, 2016

Early next month. No one else has reported it so it's not high priority.

@fruwe
Copy link

fruwe commented Dec 27, 2016

have the same problem.

here is my stacktrace:

$ bundle exec sidekiq
2016-12-27T02:10:41.519Z 73069 TID-ouum1yy14 INFO: Booting Sidekiq 4.2.8 with redis options {:url=>"redis://redis:6381/0/jobs"}
2016-12-27T02:10:42.002Z 73069 TID-ouum1yy14 DEBUG: Enabling Rails 5+ live code reloading, so hot!
uninitialized constant Sidekiq::Rails::Reloader
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/bundler/gems/sidekiq-1a039f570805/lib/sidekiq/rails.rb:76:in `block (2 levels) in <class:Rails>'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/bundler/gems/sidekiq-1a039f570805/lib/sidekiq.rb:73:in `configure_server'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/bundler/gems/sidekiq-1a039f570805/lib/sidekiq/rails.rb:63:in `block in <class:Rails>'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/lazy_load_hooks.rb:41:in `execute_hook'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/lazy_load_hooks.rb:33:in `block in on_load'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/lazy_load_hooks.rb:32:in `each'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.1/lib/active_support/lazy_load_hooks.rb:32:in `on_load'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.1/lib/rails/railtie/configuration.rb:69:in `after_initialize'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/bundler/gems/sidekiq-1a039f570805/lib/sidekiq/rails.rb:55:in `<class:Rails>'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/bundler/gems/sidekiq-1a039f570805/lib/sidekiq/rails.rb:34:in `<module:Sidekiq>'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/bundler/gems/sidekiq-1a039f570805/lib/sidekiq/rails.rb:2:in `<top (required)>'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/bundler/gems/sidekiq-1a039f570805/lib/sidekiq/cli.rb:243:in `boot_system'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/bundler/gems/sidekiq-1a039f570805/lib/sidekiq/cli.rb:50:in `run'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/bundler/gems/sidekiq-1a039f570805/bin/sidekiq:12:in `<top (required)>'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/bin/sidekiq:23:in `load'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/bin/sidekiq:23:in `<top (required)>'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.3/lib/bundler/cli/exec.rb:74:in `load'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.3/lib/bundler/cli/exec.rb:74:in `kernel_load'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.3/lib/bundler/cli/exec.rb:27:in `run'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.3/lib/bundler/cli.rb:332:in `exec'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.3/lib/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.3/lib/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.3/lib/bundler/vendor/thor/lib/thor.rb:359:in `dispatch'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.3/lib/bundler/cli.rb:20:in `dispatch'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.3/lib/bundler/vendor/thor/lib/thor/base.rb:440:in `start'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.3/lib/bundler/cli.rb:11:in `start'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.3/exe/bundle:34:in `block in <top (required)>'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.3/lib/bundler/friendly_errors.rb:100:in `with_friendly_errors'
~/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/bundler-1.13.3/exe/bundle:26:in `<top (required)>'
~/.rbenv/versions/2.3.1/bin/bundle:23:in `load'
~/.rbenv/versions/2.3.1/bin/bundle:23:in `<main>'

@mperham
Copy link
Collaborator

mperham commented Dec 27, 2016 via email

@Nowaker
Copy link
Contributor

Nowaker commented Jan 6, 2017

Isn't this fix worth a 4.2.8 bump? This affects every Rails 5 + Sidekiq Web users.

@mperham
Copy link
Collaborator

mperham commented Jan 6, 2017

@Nowaker 4.2.8 will be out Monday.

@Nowaker
Copy link
Contributor

Nowaker commented Jan 6, 2017

@mperham Great to hear! Have a good weekend.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants