私は2つの簡単なタスクを実行する方法を決定しようとしています:
ジェムのコンテキストからすべてのRailsアプリのモデルをロードしたいと思います。たとえば、Railsアプリケーションがブログであり、作成者、投稿、コメントがあるとします。含まれている宝石に、それらが存在することを知らずに、それらのモデルを見つけてもらいたいと思います。
繰り返しになりますが、ロードされた宝石のコンテキストから、レールモデルを利用できるようにしたいと思います。したがって、たとえば、作成者が存在することを知らなくても、Author.firstを呼び出すことができ、その情報をgemで利用できるようにしたいと思います。
したがって、この質問を要約します。宝石の文脈から、どのようにしてRailsプロジェクトのすべてのモデルをロードし、それらのモデルにアクセスできるのでしょうか。
これは私の速いハックです:
module ActiveTest
class Base
def listme
::ActiveRecord::Base.subclasses.collect { |type| type.name }.sort
end
end
end
1.9.3-p286 :005 > a = ActiveTest::Base.new
=> #<ActiveTest::Base:0x007f8882bdd460>
1.9.3-p286 :006 > a.listme
NameError: uninitialized constant ActiveRecord