通常のようにいくつかのクラスを定義するRails 3アプリがあります。プラグイン内でこれらのクラスの 1 つ (「rails generate plugin ...」によって生成) を再度開き、両方のファイル (アプリ自体のファイルとプラグインのファイル) を自動的に取得する方法を見つけようとしています。開発モードではリクエストごとにリロードします。
簡単な例は次のとおりです。
# root/lib/person.rb
class Person
Core = 1
end
# root/vendor/plugins/plugin1/lib/person.rb
class Person
Plugin = 2
end
# root/app/views/home/index.html.erb
<%= Person::Core %> ... <%= Person::Plugin %>
そのビューがレンダリングされると、Bike::Plugin が初期化されていないというエラーが表示されます。root/lib と root/vendor/plugins/plugin1/lib の両方を autoload_paths に追加しました (理想的には、プラグインはそれを init.rb または同様の場所に追加しますが、一度に 1 つずつ追加します)。
どうすればいいですか?autoload_at は、両方の場所から Person クラスを明示的に自動ロードするように指示できれば、役立つように見えますが、運がありませんでした (ただし、まったく新しいので、間違った引数を渡している可能性があります)。 )。最後に、lib だけでなく、標準的な場所 (特にモデル) で定義されたクラスでこれを行いたいと考えています。