Я столкнулся с проблемой, когда мое приложение Rails настроено на кэширование классов при работе в промежуточной или производственной среде. Хотя load_paths содержит только «app / models», похоже, что шаги инициализации рекурсивно кэшируют все в «app / models».
# 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
Проблема в том, что у нас есть подкаталог в 'app / models', который содержит файлы с инструкциями require, которые ссылаются на параллельную среду JRuby. Поскольку Rails ничего не знает об этой среде, наше приложение ломается при загрузке.
В нынешнем виде предлагаются предлагаемые решения ... к сожалению, идеальным является только # 1.
1) Простейшим решением было бы исключить подкаталог виновника, но ничего не нашли, как этого добиться.
2) Обезьяна исправляет метод load_application_classes, чтобы пропустить определенный подкаталог.
3) Переместить подкаталог из «app / models». Чувствует себя немного хакерским и потребует немало изменений кода.
Мысли