Rails 3.2アプリに初期化子があり、構成ファイルに基づいて起動時にモジュールが含まれています。これは次のようになります。
Array(Settings.site.authentications).map(&:to_sym).each do |sym|
AuthAuth.class_eval do
include Object.const_get(sym)
end
end
Array(Settings.site.authorizations).map(&:to_sym).each do |sym|
AuthAuth.class_eval do
include Object.const_get(sym)
end
end
# This exception is never raised when I start the server. So the includes
# appear to be working correctly.
raise "method not found!" unless AuthAuth.new.respond_to? :dynamically_included_method
AuthAuth
ユーザーが認証および承認されていることを確認するために、ApplicationController
で使用されます。:before_filter
これは正常に機能し、サイトごとに承認および認証ロジックを設定する構成可能な方法があるという要件に適合します。
ただし、サーバーを開発モードで実行しているときに、アプリケーションのいずれかのクラスにコードを変更すると、AuthAuth
モジュールが含まれていない場合のデフォルトの動作に戻ることに気付きました。
初期化ファイル以外にこのコードを含めるのに適切な場所はありますか?
これは比較的小さな問題です。コードを変更するたびに開発サーバーを再起動するのは簡単ですが、興味があります。