Rails がファイルをロードするために使用する命名規則に問題がありますconfig.autoload_paths
。
いくつかの宝石セットを使用するアプリケーションを構築しています。
この一連の gem は、モデルUser
が gem 内で定義されている場合、アプリケーションがそのモデルを拡張したい場合、という名前のファイルを作成する必要があるという方法で、アプリケーションによって拡張されることになっ"app/models/_user.rb"
ています。次のように書きます。
# Extending gems user model in the application level
class User < ActiveRecord::Base
def new_method_that_make_sense_for_my_app
#supercode here... bla bla
end
end
したがって、そのシナリオを考えると、これは変わらないと仮定しましょう。したがって、この種のファイルを配列に追加するconfig.autoload_paths
必要があるため、コードを変更して、サーバーを再起動することなく適用できます (開発環境で)。
問題は次のとおりです。
次のコードを application.rb に追加すると:
config.autoload_paths += %W(#{config.root}/app/models/_user.rb)
autoload_paths 要素は、ファイルの名前がそのファイルで定義されているクラスの名前と同等であるという規則に依存しているため、Rails は各リクエストでこのファイルを自動ロードしません。
それでは、再開します。ファイル名のアンダースコア"_user.rb"
がすべてを台無しにしています!
Rails を構成して、アンダースコアで始まりクラス名が続くファイルも検索するように指示する方法はありますか?
ありがとう!