Чтение исходного кода примеров проектов, таких как Beast и Bort, рекомендуется как хороший способ изучения рельсов. Но я обнаружил, что теряюсь при чтении исходного кода этих проектов, потому что включенные плагины могут вводить какой-то странный код без каких-либо подсказок, например "require" или "include". Не могли бы вы поделиться своим опытом чтения кода на рельсах? Впереди большое спасибо.





Код Rails - это в первую очередь код ruby. Мастер в ruby, и у вас не будет проблем с чтением кода rails. Удачи.
Когда вы учитесь использовать rails, одна из самых важных вещей, которую нужно знать, - это то, как он загружает написанный вами код. Допустим, у вас есть HelloController в подкаталоге app / controllers / demo /. Если вы сгенерировали этот контроллер, он будет иметь правильное имя Demo :: Sub :: HelloController.
Когда ваш маршрут сообщает рельсам искать "demo / sub / hello", это переводится в полное имя контроллера (Demo :: Sub :: HelloController), какие рельсы они будут пытаться вызвать. Ruby не может найти этот класс и вызывает const_missing, который заставляет rails переводить имя в файл, в данном случае demo / sub / hello_controller (:: = /, заглавные буквы кроме first = _, ищите метод подчеркивания Inflections). Затем Rails требует этот файл и проверяет правильность определения класса.
Rails добавляет несколько каталогов в путь загрузки ruby (app / controllers, app / models, app / helpers, lib, vendor), и demo / sub / hello_controller.rb в любом из этих каталогов удовлетворит требования. Но контроллеры, не входящие в состав app / controllers, нуждаются в особом внимании к своим представлениям.
Кроме того, это работает для пространств имен, только он будет искать каталог. Таким образом, обращение к Demo :: Sub будет искать каталог demo / sub. Это позволяет вам отказаться от стандартного определения классов, поэтому вы можете сделать
class Demo::Sub::HelloController < ActionController::Base
end
вместо
module Demo
module Sub
class HelloController < ActionController::Base
end
end
end
Да, я согласен. Но разве в этом процессе произошла какая-то магия рельсов, которую нужно объяснить новичку вроде меня? Или есть простой способ определить, откуда взялся странный метод?