我正在编写一个分布式系统,其中一个工作人员执行一些工作,为了启动工作人员,启动了一个init.rb
加载lib
文件夹并执行一些配置的工作人员。
结构
init.rb
lib
|-- modulename
| |-- foo.rb
| |-- configuration.rb
| `-- worker.rb
`-- modulename.rb
初始化.rb
$LOAD_PATH.unshift(File.expand_path("../lib", __FILE__))
require "bundler/setup"
require "modulename"
ModuleName.configure do |c|
c.log = "module.log"
c.pool_size = 10
end
模块名.rb
require "sidekiq"
require "modulename/foo"
require "modulename/configuration"
require "modulename/worker"
module ModuleName
def self.config
@config ||= Configuration.new
end
def self.configure
yield(config)
end
end
工人.rb
module ModuleName
class Worker
include Sidekiq::Worker
REDIS_POOL = ConnectionPool.new(:size => ModuleName.config.pool_size, :timeout => 3) { Redis.new }
def dosomething
# ...
end
end
end
如果我现在运行,ruby init.rb
我会得到一个 NoMethodError:<class:Worker>: undefined method config for ModuleName:Module (NoMethodError)
我真的不明白为什么,请给我一个提示如何解决这个问题!