コードを見ずに素晴らしい提案をするのは難しいですが、ここに 2 つの可能性があります。
このコードには 2 つのクライアントがあるようです。多分それをエンジン(ただの派手なgem)にして、自動ロードパスにパスを追加してから、レールのようながらくたを邪魔することなくgemからそれを使用できます。
おそらく、定数を作成してから、モデルで再度開きます。
いくつかの初期化子で
ActualNamespace = Class.new
DynamicNamespace = ActualNamespace
モデルファイルで
class DynamicNamespace
class MyModel
end
end
DynamicNamespace::MyModel # => ActualNamespace::MyModel
次に、コマンドラインアプリの場合
DynamicNamespace = Object
これは、名前空間を持たないことと同じです:
DynamicNamespace::MyModel # => MyModel
さて、主にリフレクションに基づいた Rails マジックの一部で問題が発生する可能性があります。あなたが何に直面するかは完全にはわかりませんが、データを送信するときにフォームが間違ったキーを生成し始めると思います. DynamicNamespace.name
これらの行に沿って何かまたは何かを定義することで、おそらくこれを修正できます。
オートローディングも問題になる可能性がありますが、オートロード パスを何らかの方法で宣言できると思います (確かなことはわかりませんが、「レールのオートローディング」をグーグルで検索すると、いくつかの有望な結果が得られます。Ruby のオートローディングにフックしているように見えますが、これは Ruby 2.0 ではなくなると思います) 最悪の場合、ディレクトリを熱心にロードするために railtie を定義することができます。これは私のリーグから少し外れていますが、アプリを初期化する前に Railtie を定義する必要があると思いますので、config/application.rb で railtie を要求する必要があるかもしれません。
残念なことに、結局のところ、Rails の慣習から逸脱し始めると、生活が困難になり始め、考える必要のなかったすべての魔法が崩壊するので、突然 Rails のコードベースに飛び込んで、それが何であるかを理解する必要があります。をしていました。