application_controller.rb не загружается - PullRequest
0 голосов
/ 16 ноября 2010

В моем приложении Rails (работает на rails 2.3.5, ruby ​​1.8.7) мой файл application_controller.rb не загружается автоматически, когда config.cache_classes = false в environment.rb.

Это в пути загрузки. Если я добавлю require 'application_controller' в конец моего environment.rb или установлю cache_classes = true, то приложение будет работать нормально.

Почему он не загружается, когда классы не запускаются?

Ответы [ 4 ]

1 голос
/ 16 ноября 2010

По некоторым причинам, ваше приложение все еще использует 2.3.2 гемов для ActiveSupport.Вероятно, он все еще ищет application.rb, а неопределенный pretty_inspect также поддается проблеме управления версиями.

Во-первых, убедитесь, что у вас нет чего-то подобного в верхней части вашего * 1006.*:

RAILS_GEM_VERSION = '2.3.2'

Если вы этого не сделаете, то в нижней части вашего environment.rb узнайте, если что-то еще не так, добавив:

puts RAILS_GEM_VERSION
1 голос
/ 16 ноября 2010

У меня есть другая идея.Вы упомянули, что он находится в пути загрузки, но позже я подтвердил бы, что он остается в пути загрузки и что плагин не испортил его или что-то в этом роде.В самом низу environment.rb (последняя строка) добавьте эту строку:

puts ActiveSupport::Dependencies.load_paths.pretty_inspect

Затем запустите script/server из командной строки и посмотрите пути загрузки,убедившись, что /path_to_your_rails_app/app/controllers появляется.

1 голос
/ 16 ноября 2010

Код приложения загружается как часть метода Rails::Initializer.run в environment.rb.Это почти последний шаг.Я не знаю ничего, что могло бы помешать загрузке контроллера приложения - мое единственное предложение - убедиться, что в имени файла /app/controllers/application_controller.rb нет опечатки и что в определении класса class ApplicationController < ActionController::Base. Нет опечатки.1004 *

Я хотел бы добавить, что первая часть моего последнего комментария относится к производственному режиму, где классы загружаются в Rails::Initializer#load_application_classes, но в режиме разработки он не кэширует классы, поэтому загружает их как частьconst_missing catcher каждый запрос.См. ActiveSupport :: Зависимости # load_missing_constant .

0 голосов
/ 16 ноября 2010

Проблема определенно связана с config.cache_classes = false; если я переключу это на true, то проблема исчезнет.

(Спасибо @Ben Lee за то, что привели меня к этому)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...