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

Cannot define multiple 'included' blocks for a Concern, only in development environment #467

Closed
tahirpoduska opened this issue Jan 31, 2018 · 2 comments

Comments

@tahirpoduska
Copy link

tahirpoduska commented Jan 31, 2018

The way shoryuken uses eager_load for Rails 4+ is causing ActiveSupport::Concern::MultipleIncludedBlocks error in my development environment. I didn't have this error when I used sidekiq.
My app uses Rails 5. It seems like eager_loading is causing these errors, when I comment out https://github.com/phstc/shoryuken/blob/master/lib/shoryuken/environment_loader.rb#L70, everything works fine. The code should be refactored to eager_load only for rails version 4.0. This is how sidekiq does it now: https://github.com/mperham/sidekiq/blob/master/lib/sidekiq/cli.rb#L262-L271.
This PR fro sidekiq might be relevant to this issue.

Here is the stacktrace:

bundler: failed to load command: shoryuken (/Users/tahir/.rbenv/versions/2.3.1/bin/shoryuken)
ActiveSupport::Concern::MultipleIncludedBlocks: Cannot define multiple 'included' blocks for a Concern
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.6/lib/active_support/concern.rb:126:in `included'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/hydra-access-controls-10.5.0/app/models/concerns/hydra/access_controls/embargoable.rb:7:in `<module:Embargoable>'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/hydra-access-controls-10.5.0/app/models/concerns/hydra/access_controls/embargoable.rb:3:in `<module:AccessControls>'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/hydra-access-controls-10.5.0/app/models/concerns/hydra/access_controls/embargoable.rb:2:in `<module:Hydra>'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/hydra-access-controls-10.5.0/app/models/concerns/hydra/access_controls/embargoable.rb:1:in `<top (required)>'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:477:in `load'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:477:in `block in load_file'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:662:in `new_constants_in'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:476:in `load_file'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:375:in `block in require_or_load'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:37:in `block in load_interlock'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies/interlock.rb:12:in `block in loading'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.6/lib/active_support/concurrency/share_lock.rb:150:in `exclusive'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies/interlock.rb:11:in `loading'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:37:in `load_interlock'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:358:in `require_or_load'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:336:in `depend_on'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:252:in `require_dependency'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.6/lib/rails/engine.rb:476:in `block (2 levels) in eager_load!'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.6/lib/rails/engine.rb:475:in `each'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.6/lib/rails/engine.rb:475:in `block in eager_load!'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.6/lib/rails/engine.rb:473:in `each'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.6/lib/rails/engine.rb:473:in `eager_load!'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.6/lib/rails/engine.rb:354:in `eager_load!'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.6/lib/rails/application/finisher.rb:59:in `each'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.6/lib/rails/application/finisher.rb:59:in `block in <module:Finisher>'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.6/lib/rails/initializable.rb:30:in `instance_exec'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.6/lib/rails/initializable.rb:30:in `run'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.6/lib/rails/initializable.rb:55:in `block in run_initializers'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tsort.rb:228:in `block in tsort_each'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tsort.rb:431:in `each_strongly_connected_component_from'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tsort.rb:349:in `block in each_strongly_connected_component'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tsort.rb:347:in `each'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tsort.rb:347:in `call'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tsort.rb:347:in `each_strongly_connected_component'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tsort.rb:226:in `tsort_each'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/2.3.0/tsort.rb:205:in `tsort_each'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.6/lib/rails/initializable.rb:54:in `run_initializers'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/railties-5.0.6/lib/rails/application.rb:352:in `initialize!'
  /Users/tahir/Sites/usda-esmis-hyrax/config/environment.rb:5:in `<top (required)>'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `require'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `block in require'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:259:in `load_dependency'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activesupport-5.0.6/lib/active_support/dependencies.rb:293:in `require'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/shoryuken-3.2.0/lib/shoryuken/environment_loader.rb:73:in `load_rails'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/shoryuken-3.2.0/lib/shoryuken/environment_loader.rb:27:in `load'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/shoryuken-3.2.0/lib/shoryuken/runner.rb:40:in `run'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/shoryuken-3.2.0/bin/shoryuken:48:in `start'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/thor-0.19.4/lib/thor/command.rb:27:in `run'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/thor-0.19.4/lib/thor/invocation.rb:126:in `invoke_command'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/thor-0.19.4/lib/thor.rb:369:in `dispatch'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/thor-0.19.4/lib/thor/base.rb:444:in `start'
  /Users/tahir/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/shoryuken-3.2.0/bin/shoryuken:59:in `<top (required)>'
  /Users/tahir/.rbenv/versions/2.3.1/bin/shoryuken:22:in `load'
  /Users/tahir/.rbenv/versions/2.3.1/bin/shoryuken:22:in `<top (required)>'
@phstc
Copy link
Collaborator

phstc commented Jan 31, 2018

@tap87 thanks for the feedback. What are the steps to reproduce that? Just try to use with Rails 5?

@tahirpoduska
Copy link
Author

tahirpoduska commented Jan 31, 2018

@phstc You can clone this repo do try bundle exec shoryuken -q default -R. It is a hyrax generated app for testing purpose. The project I work on is private but I get the same error.

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

2 participants