私は、ワーカーがいくつかのジョブを実行する分散システムをプログラミングしています。ワーカーを開始するために、フォルダーinit.rb
をロードしていくつかの構成を実行するワーカーが開始されます。lib
構造
init.rb
lib
|-- modulename
| |-- foo.rb
| |-- configuration.rb
| `-- worker.rb
`-- modulename.rb
init.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
worker.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)
よく分からないので、この問題の解き方を教えてください!