私が質問に飛び込む前に、自分のコードベースの構造について説明しようと思います。 この質問はコメント内のリンクされた質問とは異なります。なぜなら、それはモジュールクラス内のモジュールを含むリストに関係するからです。モジュールを含むすべてのクラスを見つけようとしています
module ParentModule
class X
end
end
2)また、別のモジュールの下にネストされたクラスがあるかもしれません:
ない直接クラス上または1つのレベルのモジュールに1)の定義は次のようになり、クラスXのがあるかもしれません
module ParentModule
module ChildModule
class Y
end
end
end
3)また、内部のいくつかのクラスを持つだけのモジュールがあるかもしれません:
module ParentModule
module OtherModule
def some_awesome_method
..does something
end
end
end
ParentModule
にあるOtherModule
を含むクラスのリストを取得しようとしています。ここではうまく機能し、私がこれまで持っているものです。
include_resources = ->(klass) {
begin
klass_string = klass.to_s
klass_resource = klass_string.constantize
klass_string if klass_resource.included_modules.include?(OtherModule)
rescue NameError # skip all bad naming and other irrelevant constant loading mishaps
next
end
}
私はParentModule.constants.find_all(&include_resources)
を行うのであれば、私は偉大なOtherModule
を含み、クラスのリストを取得します!しかし残念ながら、#2の例に示すように、子モジュールの下にネストされたクラスを見つけることはできません。だから私はこれをやってみました:
include_resources = ->(klass) {
begin
klass_string = klass.to_s
klass_resource = klass_string.constantize
if klass_resource.class == Module
return "ParentModule::#{klass_string}".constants.find_all do |module_klass|
module_klass.constantize.included_modules.include?(OtherModule)
end
end
klass_string if klass_resource.included_modules.include?(OtherModule)
rescue NameError # skip all bad naming and other irrelevant constant loading mishaps
next
end
}
残念ながら、これは同じリストを返します。
[モジュールを含むクラスのリストを取得する]の可能な重複(https://stackoverflow.com/questions/3917857/get-a-class-that-include-a-module) –
あなたのご意見ありがとうございます。私はサブモジュールを持っているので、この質問は異なります。リンクされた質問はありません。文字通り、私のコードに書かれている事例、試した事柄、うまくいった事例、なかった事例を追加しました。それがあなたの質問をどのようにするかではないので、私は何が分かっているのか分かりません。 – Mongoid
気持ちが悪い、私はただ助けようとしていた。同一の質問でない場合は、「可能な重複」フラグを拒否することができます。あなたはあなたの質問で "私は<この質問を試しました>と言うことができます。なぜなら、" –