Rails が app/helpers のモジュールをモデルに自動的にロードする方法に興味があります。
つまり、 app/helpers/widget_helper.rb が存在し、WidgetHelper
そのモジュールが含まれている場合、ウィジェット モデルに自動的にロードされます。
モデルに含めるための任意のコードを含むアプリ内のディレクトリが必要であり、個々のモジュールをすべて含める必要を避けたいと考えています。この機能をモックすると便利だと思いました。
Rails が app/helpers のモジュールをモデルに自動的にロードする方法に興味があります。
つまり、 app/helpers/widget_helper.rb が存在し、WidgetHelper
そのモジュールが含まれている場合、ウィジェット モデルに自動的にロードされます。
モデルに含めるための任意のコードを含むアプリ内のディレクトリが必要であり、個々のモジュールをすべて含める必要を避けたいと考えています。この機能をモックすると便利だと思いました。
ヘルパーがどのように読み込まれるかはまだわかりませんが、 rails を考慮してこれを行う良い方法を見つけるのに時間を費やしましたconfig.after_initialize call
。
app/goods
自動ロードされる ModelGoods という名前のモジュールを含むディレクトリが必要であるとします。次のコードを に追加しますapplication.rb
。
config.after_initialize do
Dir["#{Rails.root}/app/goods/*_goods.rb"].each do |file|
name = File.basename(file, ".rb").humanize.titleize.gsub(" ","")
name.gsub("Goods","").constantize.send :include, "Goods::#{name}".constantize
end
end
これにより、サブディレクトリ内のすべてのファイルが解析され、そのapp/goods
ディレクトリに含まれる名前の付いたモデルのモジュールが含まれます。
明らかに、"Goods" を必要なものに置き換えることができますが、これは、作成するすべてのモジュールを手動で含める必要なく、コードを区分化する適切な方法を表しています。