Sidekiq: Cannot define multiple 'included' blocks for a Concern

在了解了Sidekiq的强大之后,开始着手使用,谁知道一开始就碰上了问题:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
2016-04-21T10:23:40.101Z 16720 TID-oum74s8io INFO: Booting Sidekiq 4.1.1 with redis options {:namespace=>"sidekiq", :url=>"redis://127.0.0.1:6379/0"}
Cannot define multiple 'included' blocks for a Concern
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/concern.rb:126:in `included'
/Users/evenluo/Develop/Link Firms/Apollo/app/controllers/concerns/Authenticatable.rb:4:in `<module:Authenticatable>'
/Users/evenluo/Develop/Link Firms/Apollo/app/controllers/concerns/Authenticatable.rb:1:in `<top (required)>'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:457:in `load'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:457:in `block in load_file'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:647:in `new_constants_in'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:456:in `load_file'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:354:in `require_or_load'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:317:in `depend_on'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:233:in `require_dependency'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/engine.rb:472:in `block (2 levels) in eager_load!'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/engine.rb:471:in `each'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/engine.rb:471:in `block in eager_load!'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/engine.rb:469:in `each'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/engine.rb:469:in `eager_load!'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/engine.rb:346:in `eager_load!'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/application/finisher.rb:56:in `each'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/application/finisher.rb:56:in `block in <module:Finisher>'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/initializable.rb:30:in `instance_exec'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/initializable.rb:30:in `run'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/initializable.rb:55:in `block in run_initializers'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:228:in `block in tsort_each'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:431:in `each_strongly_connected_component_from'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:349:in `block in each_strongly_connected_component'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:347:in `each'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:347:in `call'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:347:in `each_strongly_connected_component'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:226:in `tsort_each'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:205:in `tsort_each'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/initializable.rb:54:in `run_initializers'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/application.rb:352:in `initialize!'
/Users/evenluo/Develop/Link Firms/Apollo/config/environment.rb:5:in `<top (required)>'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `require'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `block in require'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:240:in `load_dependency'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `require'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/sidekiq-4.1.1/lib/sidekiq/cli.rb:233:in `boot_system'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/sidekiq-4.1.1/lib/sidekiq/cli.rb:49:in `run'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/sidekiq-4.1.1/bin/sidekiq:12:in `<top (required)>'
/Users/evenluo/.rvm/gems/ruby-2.3.0/bin/sidekiq:22:in `load'
/Users/evenluo/.rvm/gems/ruby-2.3.0/bin/sidekiq:22:in `<main>'
/Users/evenluo/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `eval'
/Users/evenluo/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `<main>'

这是多么地让人心痛啊。。

Ok, Let’s google this. And find one possible solution: Fix Sidekiq loading problem: Cannot define multiple included blocks for a Concern

不过不幸的是,两个都未能解决了问题。所以我尝试打印一下是谁调用了这个文件,得到了这个:

调用方1:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
FILE /Users/evenluo/Develop/Link Firms/Apollo/app/controllers/concerns/authenticatable.rb LOADED BY:
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `require'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `block in require'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:240:in `load_dependency'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `require'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:360:in `require_or_load'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:494:in `load_missing_constant'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:184:in `const_missing'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:526:in `load_missing_constant'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:184:in `const_missing'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:526:in `load_missing_constant'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:184:in `const_missing'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:526:in `load_missing_constant'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:184:in `const_missing'
/Users/evenluo/Develop/Link Firms/Apollo/app/controllers/api/v1/base_controller.rb:2:in `<class:BaseController>'
/Users/evenluo/Develop/Link Firms/Apollo/app/controllers/api/v1/base_controller.rb:1:in `<top (required)>'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `require'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `block in require'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:240:in `load_dependency'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `require'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:360:in `require_or_load'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:317:in `depend_on'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:233:in `require_dependency'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/engine.rb:472:in `block (2 levels) in eager_load!'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/engine.rb:471:in `each'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/engine.rb:471:in `block in eager_load!'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/engine.rb:469:in `each'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/engine.rb:469:in `eager_load!'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/engine.rb:346:in `eager_load!'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/application/finisher.rb:56:in `each'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/application/finisher.rb:56:in `block in <module:Finisher>'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/initializable.rb:30:in `instance_exec'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/initializable.rb:30:in `run'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/initializable.rb:55:in `block in run_initializers'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:228:in `block in tsort_each'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:431:in `each_strongly_connected_component_from'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:349:in `block in each_strongly_connected_component'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:347:in `each'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:347:in `call'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:347:in `each_strongly_connected_component'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:226:in `tsort_each'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:205:in `tsort_each'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/initializable.rb:54:in `run_initializers'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/application.rb:352:in `initialize!'
/Users/evenluo/Develop/Link Firms/Apollo/config/environment.rb:5:in `<top (required)>'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `require'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `block in require'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:240:in `load_dependency'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `require'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/sidekiq-4.1.1/lib/sidekiq/cli.rb:233:in `boot_system'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/sidekiq-4.1.1/lib/sidekiq/cli.rb:49:in `run'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/sidekiq-4.1.1/bin/sidekiq:12:in `<top (required)>'
/Users/evenluo/.rvm/gems/ruby-2.3.0/bin/sidekiq:22:in `load'
/Users/evenluo/.rvm/gems/ruby-2.3.0/bin/sidekiq:22:in `<main>'
/Users/evenluo/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `eval'
/Users/evenluo/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `<main>'

调用方2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
FILE /Users/evenluo/Develop/Link Firms/Apollo/app/controllers/concerns/Authenticatable.rb LOADED BY:
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `require'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `block in require'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:240:in `load_dependency'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `require'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:360:in `require_or_load'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:317:in `depend_on'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:233:in `require_dependency'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/engine.rb:472:in `block (2 levels) in eager_load!'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/engine.rb:471:in `each'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/engine.rb:471:in `block in eager_load!'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/engine.rb:469:in `each'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/engine.rb:469:in `eager_load!'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/engine.rb:346:in `eager_load!'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/application/finisher.rb:56:in `each'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/application/finisher.rb:56:in `block in <module:Finisher>'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/initializable.rb:30:in `instance_exec'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/initializable.rb:30:in `run'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/initializable.rb:55:in `block in run_initializers'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:228:in `block in tsort_each'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:431:in `each_strongly_connected_component_from'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:349:in `block in each_strongly_connected_component'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:347:in `each'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:347:in `call'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:347:in `each_strongly_connected_component'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:226:in `tsort_each'
/Users/evenluo/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/tsort.rb:205:in `tsort_each'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/initializable.rb:54:in `run_initializers'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/railties-4.2.6/lib/rails/application.rb:352:in `initialize!'
/Users/evenluo/Develop/Link Firms/Apollo/config/environment.rb:5:in `<top (required)>'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `require'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `block in require'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:240:in `load_dependency'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/activesupport-4.2.6/lib/active_support/dependencies.rb:274:in `require'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/sidekiq-4.1.1/lib/sidekiq/cli.rb:233:in `boot_system'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/sidekiq-4.1.1/lib/sidekiq/cli.rb:49:in `run'
/Users/evenluo/.rvm/gems/ruby-2.3.0/gems/sidekiq-4.1.1/bin/sidekiq:12:in `<top (required)>'
/Users/evenluo/.rvm/gems/ruby-2.3.0/bin/sidekiq:22:in `load'
/Users/evenluo/.rvm/gems/ruby-2.3.0/bin/sidekiq:22:in `<main>'
/Users/evenluo/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `eval'
/Users/evenluo/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `<main>'

很明显二者的调用方的确不是同一个。但是仍然没有什么用。于是我去sidekiq提了issue: sidekiq#2942,不知道会有怎样的结果,只能自求多福等待看看吧。


后来问题得到了解决,大家可以从issue里看到这个问题的原因,大家最好还是遵从文件命名的规范呐,不然会出这种小屁问题