Как читать исходный код примера проекта Rails?

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
1 732
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Код Rails - это в первую очередь код ruby. Мастер в ruby, и у вас не будет проблем с чтением кода rails. Удачи.

Да, я согласен. Но разве в этом процессе произошла какая-то магия рельсов, которую нужно объяснить новичку вроде меня? Или есть простой способ определить, откуда взялся странный метод?

eric2323223 29.12.2008 16:40
Ответ принят как подходящий

Когда вы учитесь использовать 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
  1. Разрабатывайте простой проект рельсов, пока у вас не будет базовых элементов Rails. Потому что, как только вы познакомитесь со стандартным Rails, вы быстрее узнаете функциональность плагина.
  2. Познакомьтесь с Ruby лучше, поскольку на нем написан Rails. Например, есть книга Ruby for Rails, которая является хорошей отправной точкой.
  3. Мне нравится сначала смотреть на тесты сверху вниз (интеграция, контроллер, модель).

Другие вопросы по теме