現在、約1,000行以上のコードを含むヘルパーがあります。これらすべてのメソッドを内のサブフォルダーに移動lib/custom/scripts/parsers/
しようとしていますが、過度に複雑なプロセスなしでこれらすべてのメソッドを引き続き使用できるように、ワーカーにどのような変更を加える必要があるのかよくわかりません。
たとえば、すべてのメソッドを次のような複数のファイルに入れたいと思います。
のhello_world
内部で呼び出されるメソッドがある場合parser_two.rb
、次のようになります。
# lib/custom/scripts/parsers/parser_two.rb
module ParserTwo
def hello_world
puts "Hello World"
end
end
次のように、ワーカーからメソッドに直接アクセスできるようにしたいと思います。
class RandomWorker
include Sidekiq::Worker
sidekiq_options queue: Rails.env.to_sym, retry: 1
def perform
-> how to access hello_world method directly from parser_two.rb?
end
end
lib/custom/scripts/parsers
ディレクトリ内のすべてのモジュールを組み込む方法がありますか?また、この継承をすべてのワーカーに適用できる方法はありますか?
ヘルパーを使用するときは、それだけですinclude HelperName
が、もちろんこのシナリオでは同じようには機能しません。
したがって、実行できるのはActiveSupport::Concern
、次のようなモジュール内でモジュールを使用してネストすることです。
module ParserTwo
extend ActiveSupport::Concern
included do
def hello_world
puts "hello world!"
end
#...other methods
end
end
module AllParsers
extend ActiveSupport::Concern
included do
include ParserOne
include ParserTwo
end
end
次に、次のAllParsers
ように使用できます。
class RandomWorker
include Sidekiq::Worker
include AllParsers
def perform
hello_world
end
end
それでも、必要に応じて1つのモジュールのみを使用する機能を維持します。
class RandomWorker
include Sidekiq::Worker
include ParserTwo
def perform
hello_world
end
end
次に、それらを配置する場所について説明します。モジュールを内部に配置する場合は、モジュールをlib/something/directory
正しくロードすることを忘れないでください。このstackoverflowの質問を参照できます:
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加