ステージング環境または運用環境でRailsアプリケーションがクラスをキャッシュするように設定されているという問題に直面しています。 load_pathsには 'app/models'しか含まれていませんが、初期化ステップでは 'app/models'のすべてを再帰的にキャッシュしているようです。クラスEager Loadのサブディレクトリを除外
# Eager load application classes
def load_application_classes
if configuration.cache_classes
configuration.eager_load_paths.each do |load_path|
matcher = /\A#{Regexp.escape(load_path)}(.*)\.rb\Z/
Dir.glob("#{load_path}/**/*.rb").sort.each do |file|
require_dependency file.sub(matcher, '\1')
end
end
end
end
この問題は、我々は、同時JRubyの環境を参照するステートメントを必要とファイルが含まれている「アプリ/モデルの内のサブディレクトリを持っていることです。 Railsはこの環境を何も知らないので、アプリケーションは負荷がかかりません。
残念ながら#1だけが理想的です。
1)最も簡単な解決策は、犯人サブディレクトリを除外することですが、これを達成する方法は何も見つかりませんでした。
2)Monkeyはload_application_classesメソッドをパッチして、特定のサブディレクトリをスキップします。
3) 'app/models'の下のサブディレクトリを移動します。ちょっとハッキリしていて、かなりのコード変更が必要になります。
思考?